[
https://issues.apache.org/jira/browse/LOG4PHP-138?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13022181#comment-13022181
]
Christian Grobmeier commented on LOG4PHP-138:
---------------------------------------------
The rollOver function needs a lock before doing its stuff.
Another process writes to the file (and has the lock) while the seconde process
tries to rename.
For a quick fix, can you try to replace the append method of
LoggerAppenderRollingFile with:
/**
* @param LoggerLoggingEvent $event
*/
public function append(LoggerLoggingEvent $event) {
parent::append($event);
if(ftell($this->fp) > $this->getMaxFileSize()) {
if(flock($this->fp, LOCK_EX)) {
$this->rollOver();
}
}
}
This code is untested, I have no env setup currently. Please try this and see
if it helps.
We'll include a patch for the next log4php release if it works for you
For the sake of completnes - what OS is you code running on? I would like to
check if flock is having problems on your OS or not.
Thanks!
Christian
> Permission denied while renaming log file when hundred of users are accessing
> the application
> ---------------------------------------------------------------------------------------------
>
> Key: LOG4PHP-138
> URL: https://issues.apache.org/jira/browse/LOG4PHP-138
> Project: Log4php
> Issue Type: Bug
> Components: Code
> Affects Versions: 2.0
> Environment: Windows operating system
> Reporter: Bhumir Sheth
> Priority: Critical
> Fix For: 2.0
>
>
> Hi,
> We have developed a web application and integrated with log4php, which is
> used by hundred of users. When the size of log file exceed the maximum file
> size, it calls rollOver() function to create back up file for log file and
> truncate the current log file.
> We faced one error while renaming the file from "filename" to "filename.1".
> This error is generated when hundred of users are accessing the application
> at the same time. The error is generated as below:
> PHP Warning:
> rename(C:\PHP\errors/Test_Module.log,C:\PHP\errors/Test_Module.log.1) [<a
> href='function.rename'>function.rename</a>]: Permission denied in
> C:\Inetpub\wwwroot\Test_Application\System\System_Logger\log4php\src\main\php\appenders\LoggerAppenderRollingFile.php
> on line 140
> Also, back up of log files are not created in sequence when above warning is
> generated. For example, log file "Test_Module.log" is already exists and
> rollOver() function is called to create new back up file then it creates
> "Test_Module.log.4" instead of "Test_Module.log.1".
> Moreover, log file has given all the required permissions and it works fine
> while appending the logs.
> We would appreciate if you can help us by providing a solution or work-around
> for resolving this issue.
> Please let me know if more details are required.
> Thank you.
> Best regards,
> Bhumir Sheth
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira