我遇到了奇怪的情况。
我的应用程序将大量跟踪日志记录到文件中。 (我不知 Prop 体如何,我使用我的框架记录器。不过可以检查一下)
问题是,当应用程序因致命错误(仅致命)而终止时[示例 - “ fatal error :在非对象上调用成员函数 someFunction()”] ,我最终没有日志,甚至是在我的脚本执行过程中应该更早记录的日志。
(是的,我尝试刷新日志,这也没有帮助。看起来应用程序因 fatal error 而终止,以某种方式取消了对应用程序早期完成的文件的写入。
你知道这里发生了什么吗?
谢谢
最佳答案
fatal error 是...嗯...致命:它会停止脚本的执行,而脚本不会执行任何应该执行的操作。
就您而言,我认为您的日志记录框架会记录到内存中 - 并且该内存中的日志仅在请求处理完成后才会写入文件。
一些日志机制这样做是为了避免在生成响应期间的不同点多次写入文件(这意味着保持文件锁定,以避免并发问题;或者打开-关闭-重新打开-重合-...它)
当您收到 fatal error 时,不会调用应在响应生成结束时完成的正常操作 - 因此,内存中的日志不会写入文件。
现在,唯一确定的方法是查看框架的日志记录机制;-)
关于PHP:由于“致命”错误而突然终止请求的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5492988/