[ 
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

Reply via email to