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 "Ivan Habunek (JIRA)" <ji...@apache.org> on 2012/09/04 17:50:07 UTC

[jira] [Commented] (LOG4PHP-187) Logging does not work in shutdown function

    [ https://issues.apache.org/jira/browse/LOG4PHP-187?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13447764#comment-13447764 ] 

Ivan Habunek commented on LOG4PHP-187:
--------------------------------------

Hello Till,

I noticed this behaviour some weeks ago and fixed it. The cause of the problem was that log4php appenders were using register_shutdown_function, instead of using a destructor, in hope of exiting gracefully in case of a fatal error. Shutdown functions are executed even if a fatal error occurs, and destructors are not. However, it caused the bug you are now reporting.

Luckily, this is fixed in trunk. I have tried it out, and the ouput is:

ihabunek@vs1779:~/tmp$ cat test.log
Tue Sep  4 17:38:38 2012,715 [30453] TRACE ShutdownTest - function main() called
Tue Sep  4 17:38:39 2012,187 [30453] INFO ShutdownTest - *** start shutdown test ***
Tue Sep  4 17:38:40 2012,187 [30453] TRACE ShutdownTest - function shutdown() called
Tue Sep  4 17:38:40 2012,187 [30453] INFO ShutdownTest - *** exiting shutdown test ***

Please try for yourself and let me know if it works. To get the latest code, just run:
svn checkout https://svn.apache.org/repos/asf/logging/log4php/trunk/src/main/php log4php

Thanks for reporting.
                
> Logging does not work in shutdown function
> ------------------------------------------
>
>                 Key: LOG4PHP-187
>                 URL: https://issues.apache.org/jira/browse/LOG4PHP-187
>             Project: Log4php
>          Issue Type: Bug
>    Affects Versions: 2.2.1
>         Environment: Linux x86_64 GNU/Linux with PHP 5.4.14,
> Windows 7 with PHP 5.4.6
>            Reporter: Till Heimann
>
> I register a shutdown function in php. In this shutdown function I try to log something unsing Log4php.
> actual:
> No Log entries for any log call within the shutdown function.
> expected:
> Log entries from the shutdown function.
> Exemple Code, config file and shell output:
> ****** log4php_conf.xml *******
> <?xml version="1.0" encoding="UTF-8"?>
> <configuration xmlns="http://logging.apache.org/log4php/">
>         <appender name="myAppender" class="LoggerAppenderFile">
>                 <layout class="LoggerLayoutTTCC" />
>                 <param name="file" value="test.log" />
>         </appender>
>         <root>
>                 <level value="TRACE" />
>                 <appender_ref ref="myAppender" />
>         </root>
> </configuration>
> ---------------------------------------------------------------------
> ******* test.php *******
> <?php
> require_once './log4php/Logger.php';
> Logger::configure('./log4php_conf.xml');
> $logger = Logger::getLogger("ShutdownTest");
> main();
> function main() {
>         global $logger;
>         $logger->trace("function main() called");
>         $logger->info("*** start shutdown test ***");
>         register_shutdown_function('shutdown');
>         print("\ndo something ... ");
>         sleep(1);
>         print("done\n");
> }
> function shutdown(){
>         global $logger;
>         $logger->trace("function shutdown() called");
>         // do some stuff like logging errors ...
>         $logger->info("*** exiting shutdown test ***");
>         print("This line is printed out.\n");
> }
> ?>
> ---------------------------------------------------------------------
> Linux output:
> -bash-3.2$ php test.php
> do something ... done
> This line is printed out.
> -bash-3.2$ cat test.log
> Tue Sep  4 14:40:46 2012,948 [29482] TRACE ShutdownTest - function main() called
> Tue Sep  4 14:40:46 2012,952 [29482] INFO ShutdownTest - *** start shutdown test ***
> -bash-3.2$ php --version
> PHP 5.2.14 (cli) (built: Aug 27 2010 16:44:17)
> Copyright (c) 1997-2010 The PHP Group
> Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
> ---------------------------------------------------------------------
> Windows output:
> PS C:\test_log4php> php .\test.php
> do something ... done
> This line is printed out.
> PS C:\test_log4php> cat .\test.log
> 09/04/12 14:13:05,118 [4844] TRACE ShutdownTest - function main() called
> 09/04/12 14:13:05,120 [4844] INFO ShutdownTest - *** start shutdown test ***
> PS C:\test_log4php> php --version
> PHP 5.4.6 (cli) (built: Aug 15 2012 21:16:03)
> Copyright (c) 1997-2012 The PHP Group
> Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
> PS C:\test_log4php>

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira