我有两个php文件。
<?php
register_shutdown_function("shutdownHandler");
require_once ('apache-log4php-2.3.0/src/main/php/Logger.php');
Logger::configure($_SERVER['DOCUMENT_ROOT'].'/front-page/lib/logger.xml');
function shutdownHandler()
{
$lasterror = error_get_last();
switch ($lasterror['type'])
{
case E_ERROR:
case E_CORE_ERROR:
case E_COMPILE_ERROR:
case E_USER_ERROR:
case E_RECOVERABLE_ERROR:
case E_CORE_WARNING:
case E_COMPILE_WARNING:
case E_PARSE:
$error = "[SHUTDOWN] :" . $lasterror['type'] . " | msg:" .
$lasterror['message'] . " | file:" . $lasterror['file'] . " | ln:" . $lasterror['line'];
$log = Logger::getLogger('myLogger');
$log->info($error);
}
}
?>
我在SO上提到了这个错误处理。
我有另一页
<?php
include('myPage.php')
?>
我修改了php.ini
,以便第一个php将被添加到所有php。
我想为我的网页进行错误处理。我刚刚在第二页中添加了以下内容
<?php
require 'myPageXYZ.php';
?>
我的文件丢失了。[因为我拼错了]所以require
会抛出致命的错误。我将其记录在log4php
的文件中。但不幸的是,日志记录无效。
我调试了代码。它转到case语句并执行但不创建日志文件。
我刚刚在我的第二个php文件中修改如下
<?php
$log = Logger::getLogger('myLogger');
$log->info("ok");
include('myPage.php')
?>
IT工作。它还会创建文件并记录ok
和error statement
。所以我猜我的log4php
属性并没有错。请让我知道我错过了什么。我错过了两个php文件之间的任何内容吗?像范围或东西。
修改
LOG4PHP xml文件:
<configuration xmlns="http://logging.apache.org/log4php/">
<appender name="myAppender" class="LoggerAppenderFile">
<param name="file" value="myLog.log" />
</appender>
<appender name="myConsoleAppender" class="LoggerAppenderConsole" />
<logger name="myLogger">
<level value="DEBUG" />
<appender_ref ref="myAppender" />
</logger>
</configuration>