You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4php-dev@logging.apache.org by "Christian Grobmeier (JIRA)" <ji...@apache.org> on 2011/04/20 17:52:05 UTC

[jira] [Commented] (LOG4PHP-138) Permission denied while renaming log file when hundred of users are accessing the application

    [ 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