首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中做一般日志记录的惯用方法是什么?

问在PHP中做一般日志记录的惯用方法是什么?
EN

Stack Overflow用户
提问于 2013-08-10 02:07:06
回答 1查看 951关注 0票数 0

我有Java背景,已经习惯了像log4j、logback和slf4j这样的日志框架。然而,在进行PHP编程时,我发现自己在使用echo和var_dump/print_r,并且(通常)将日志信息写入我正在处理的网页。我在想,在PHP中肯定还有更好的方法来做到这一点?那么做PHP日志的惯用方法是什么呢?

我遇到过log4php,有些地方建议将error_log也用于一般的日志记录目的。更复杂的问题是,我编写的PHP代码通常是较大系统中的模块,因此多个模块可以在同一请求中运行,并且日志记录最好按模块隔离。

任何意见和建议都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2013-08-10 02:32:09

我是Log4PHP的长期用户,我强烈推荐它。:)

但是关于正确记录日志的问题是相当困难的。我在企业环境中使用Log4PHP,其中有多个应用程序都使用相同的日志记录,并且它们还假定记录器配置正确且可以使用。所以这基本上是一个非常简单的“我假设相同的日志记录在任何地方都可用”的情况。

开发供其他人使用的模块是完全不同的任务。您可以使用自己的内部日志记录,但是将这些日志消息写到哪里呢?如果您的模块意外地填满了硬盘,则可以将其视为不良行为。您模块还需要记录到应用程序其余部分正在记录的目标。

如果您的模块足够小,日志记录可能不是一个大问题,因为您可以通过其他方式(如抛出异常或返回false并提供专用的错误信息函数)来传达任何错误情况。

有一个所有日志框架最终可能实现的通用记录器接口的定义:PSR-3,但是有两个缺点会使这个接口对您来说不可用: 1. Log4PHP当前没有实现该接口,2.它使用名称空间,因此至少需要PHP5.3。

不过,它背后的一般思想可能会对您有所帮助:您的模块应该提供一种方法来接受从外部世界传入的记录器。如果没有记录器,它应该不会记录。因为你可能想要测试你的日志记录,所以应该有一个包装器来为你的模块提供一个统一的接口,并封装任何记录器的糟糕的实现差异。开始为您的模块提供PSR-3-Wrapper和Log4PHP包装器,并对其他日志需求的公共需求做出反应。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18152950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档