2

我正在经历一个奇怪的情况。

我的应用程序将大量跟踪日志记录到一个文件中。(我不确切知道如何,我使用我的框架记录器。不过可以检查一下)

问题是,当应用程序因致命错误(仅致命)[示例 - “致命错误:在非对象上调用成员函数 someFunction()”] 终止时,我最终没有日志,甚至没有日志在我的脚本执行期间已经记录了很多。

(是的,我尝试刷新日志,这也无济于事。看起来应用程序因致命错误而终止,以某种方式取消了在应用程序早期完成的文件写入。

有什么想法吗?

谢谢

4

2 回答 2

3

致命错误是......好吧......致命:它停止脚本的执行,它不会做任何应该做的事情。


在您的情况下,我想您的日志记录框架会登录到内存中 - 并且此内存中的日志仅在请求处理完成时才写入文件。
一些日志机制会这样做,以避免在响应生成期间的不同点多次写入文件(这意味着保持文件锁定,以避免并发问题;或打开-关闭-重新打开-重新关闭-... )

当您收到致命错误时,不会调用应在响应生成结束时完成的正常操作——因此,内存中的日志不会写入文件。

现在,确定的唯一方法是查看您的框架的日志记录机制;-)

于 2011-03-30T22:08:28.420 回答
0

显然,帕斯卡提到的致命错误的致命性并不是 100% 致命的。

即使出现致命错误,以下内容也允许我拥有我的日志:

function correctShutdown()
{
   logger->flush();
}

register_shutdown_function('correctShutdown');
于 2011-03-30T23:07:43.927 回答