在log4php文档中,它们仅配置根记录器。 (见:http://logging.apache.org/log4php/quickstart.html)
<configuration xmlns="http://logging.apache.org/log4php/">
<appender name="myAppender" class="LoggerAppenderFile">
<param name="file" value="myLog.log" />
</appender>
<root>
<level value="WARN" />
<appender_ref ref="myAppender" />
</root>
</configuration>
以上是仅适用于根记录器的配置。然而他们继续他们的榜样:
// Fetch a logger, it will inherit settings from the root logger
$log = Logger::getLogger('myLogger');
如果我只想要根记录器怎么办?他们在快速入门时忽略了这一事实令人难以置信。我为什么要有2个记录器,一个他们甚至不配置(如果我执行这个例子它会破坏我的代码吗?我想是这样!),而不是1?
所以问题仍然存在,我如何只使用根记录器?
答案:
在我的测距之后,我在他们的文档中更深入地找到了答案(参见http://logging.apache.org/log4php/docs/loggers.html):
调用类静态Logger :: getRootLogger()方法检索 根记录器。
答案 0 :(得分:1)
您发现:是的,您只能使用根记录器。但你会错过一个有趣的部分。所以这就是为什么你不应该只使用根记录器:
Log4php允许您创建任意记录器名称。如果需要,您可以将此记录器名称记录到日志目标中,即可以使用2014-06-11 12:15 TheLoggerName Here is the message
之类的行。
为什么会有趣?因为它有助于为日志消息添加上下文。
一种方法是为特殊日志记录问题定义一些不同的记录器名称,例如安全消息的记录器(“用户登录”,“密码错误”,“访问违规”),审计跟踪,数据库内容等。 / p>
另一种方法是在记录器名称中对类名进行编码。这样,您可以直接查看日志消息来自哪个类,这将帮助您找到消息的来源。您只需将反斜杠和下划线转换为点,然后使用记录器名称(假设符合PSR-0/4的类名称)。
如果您在那里,那么您只配置根记录器并不重要,因为这是每条记录消息最终都会终止的地方。但它会变得更好:通过执行此操作,您可以使来自数据库类的所有警告消息静音,但只需通过更改日志配置,将所有内容记录到HTTP客户端类的调试级别。
这对你来说听起来有点过头了,我可以从经验中说,在大多数情况下做复杂的配置不是要做的事情,但是如果需要的话,能够做到这一点比不能做到更好这样做是因为只使用了根记录器。如果您在格式化模式中包含名称,那么知道日志消息来自哪里的部分会立即得到回报。