跨类的PHP日志记录方法

时间:2012-03-08 22:41:30

标签: php logging

我创建了一个简单的类LogHelper,它使用我在应用程序中调用的静态方法。我可以这样称呼它:

LogHelper::writeToErrorLog($config->getLogPath(), $exception);  or
LogHelper::writeToErrorLog($config->getLogPath(), $exception, $config->getLogFile);

writeToErroLog方法将生成一个日志文件名(如果没有传递给它)。

我有另一个名为Config的类,它基本上采用XML文件并通过getter& amp; setter方法。这是在应用程序开始时初始化的。包含需要写入错误日志的日志路径。

我的要求是我在每次运行应用程序时创建一个具有相同文件名的日志文件。当应用程序结束日志时,如果已填充,将通过电子邮件发送。

我的应用程序有许多其他类用于DB,解析数据,格式化数据等......所有这些都需要在某些时候进行日志记录。我的大多数错误都来自抛出的异常,这些异常会冒泡到父类,被捕获和由LogHelper处理。有几种情况我不想抛出异常,只想记录信息或错误。

我担心的是,我觉得我经常将配置传递给需要记录的每个类,这感觉不对。另外我只想设置一次错误日志的文件名。有没有最好的实践方法来接近这个?

TIA

东西

1 个答案:

答案 0 :(得分:1)

您是否考虑过使用set_exception_handler()?您不必将记录器放在每个类中,它只会处理所有未捕获的异常。您可以在引导过程或其他一些应用程序初始化点中调用它:

set_exception_handler(array("MyClassName", "functionNameHere"));

在该功能中,您可以拨打LogHelper::writeToErrorLog()