php - 在 PHP 中编写(到文件)记录器的最有效方法?

标签 php logging

希望这里有人可以帮助我 - 基本上我有一个我正在更新的日志记录类(很久以前制作的),我想确保它在 98-99% 的情况下记录消息。但是现在它不处理 exit(),它基本上只是在每次向记录器发送消息/错误时写入文件(打开、写入和关闭)。

处理 exit() 的最佳方式是什么,并且在磁盘写入方面效率最高?现在我正在查看记录器类中的 __destruct(其中调用了 fopen、fwrite 和 fclose),但我不太确定这是否安全或有效。

编辑:set_error_handler() 怎么样?我记得几年前读到这很慢,而且对于自定义错误/消息(如 SQL 问题)不是很好

最佳答案

如果你想在脚本结束时记录一些东西,你应该看看 PHP 的 register_shutdown_function():

function shutdown()
{
     // .. log code here.
}

register_shutdown_function('shutdown');

您应该避免使用 __destruct() 方法,因为无法保证它会在您期望它被调用时被调用。

您还可以查看 PHP 内置的 error_log() 方法,将内容写入实际的 PHP 错误日志文件(这可能比编写您自己的记录器更可靠)。

引用资料:

http://php.net/manual/en/function.register-shutdown-function.php

http://php.net/manual/en/function.error-log.php

关于php - 在 PHP 中编写(到文件)记录器的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986244/

相关文章:

php - 将 Chrome 中录制的 WAV 文件保存到服务器

php - 连接 3 个表,mysql php

php - 蛋糕 php 包含在包含

android - 有没有办法替换 Android 中的标准日志?

ios - Lumberjack 日志 DDLogInfo 在控制台中显示为警告

php - 如何在同一个 php 中将两个 Select 查询的输出合并到一个 JsonObject 中?

PHP - 如何在表单提交的文本中打印 '\n' 、 '\r' 、 '\r\n' 和制表符?

tomcat - 如何配置 Tomcat 以通过系统日志记录所有内容?

linux - 使用shell脚本快速读取Arduino数据

java - 将 System.out 和 System.err 重定向到 slf4j