我是 Log4PHP 的长期用户,我强烈推荐它。:)
但是关于正确记录的问题是相当困难的。我在企业环境中使用 Log4PHP,其中有多个应用程序都使用相同的日志记录,并且它们还假设记录器已正确配置并可以使用。所以这基本上是一个非常简单的“我假设到处都有相同的日志记录”的情况。
开发模块供其他人使用是完全不同的任务。您可能会使用自己的内部日志记录,但是您将这些日志消息写入到哪里?如果您的模块意外填满硬盘驱动器,则可能被视为不良行为。您的模块还需要登录到应用程序的其余部分正在登录的目标。
如果您的模块足够小,那么日志记录可能不是一个真正的大问题,因为您可以通过其他方式传达任何错误情况(例如抛出异常或返回 false 并提供专用的错误信息功能)。
有一个所有日志框架最终可能实现的通用记录器接口的定义:PSR-3但是有两个缺点会使您无法使用该解决方案:1. Log4PHP 当前没有实现该接口,以及 2. 它使用命名空间等至少需要 PHP 5.3。
但是,它背后的一般思想可能会对您有所帮助:您的模块应该提供一种方法来接受从外部世界传递给它的记录器。如果没有记录器,则不应记录。而且因为您可能想测试您的日志记录,所以应该有一个包装器,它为您的模块提供一个统一的接口,并封装任何记录器的令人讨厌的实现差异。开始为您的模块提供 PSR-3-Wrapper 和 Log4PHP 包装器,并响应公众对其他日志要求的需求。