在PHP中编写(To File)记录器的最有效方法?

问题描述 投票:3回答:2

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

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

编辑:set_error_handler()怎么样?我记得几年前读过这篇文章非常慢,对自定义错误/消息不太好(比如SQL问题)

php logging
2个回答
6
投票

如果你想在脚本结束时记录一些东西,你应该看一下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


1
投票

我总是使用一些全局函数,例如

function BeforeExit () {
  //do stuff like logging
  exit;
}
© www.soinside.com 2019 - 2024. All rights reserved.