跨类的PHP日志记录方法


PHP logging approach across classes

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

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

writeToErroLog方法将生成一个日志文件名,如果其中没有传入

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

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

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

我担心的是,我觉得我不断地将配置传递给每个需要日志记录的类,这感觉是错误的。此外,我只想为错误日志设置一次文件名。有什么最佳实践方法可以解决这个问题吗?

TIA-

填充

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

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

在该函数中,您可以调用LogHelper::writeToErrorLog()