Log4php命名记录器基于命名空间并记录到特定文件

时间:2013-04-02 22:33:29

标签: log4php

我正在使用log4php并且我基本上已经将它包装起来,所以当我的任何类调用Logger时,他们也会使用getLogger将其初始化,并根据调用类的命名空间命名记录器

e.g。

命名空间my \ class \ space

记录器::的GetInstance(的 NAME_SPACE

将创建一个名为my \ class \ space的记录器(它实际上在我的包装器中也有一个前缀,例如instance \ my \ class \ space)。

如何编写log4php配置以将所有日志文件转储到默认(根)记录器,然后根据我感兴趣的特定命名空间指定其他记录器。

e.g。我想做点什么

<logger name="instance\my\class\space">

并将这些类和子类消息记录到其他所有文件中。

有什么想法吗?

由于

更新

<logger name="instance\my\class\space" additivity="false">

会将我的实例\ my \ class \ space记录到另一个文件中,但它不包括子包,例如。

instance \ my \ class \ space \ sub仍然以root身份登录。我以为log4j自动处理子包,log4php不支持这个吗?

1 个答案:

答案 0 :(得分:0)

确定。所以它看起来好像log4php支持子类,但你使用log4j点包分隔符表示法而不是php命名空间分隔符表示法。

instance \ my \ class \ space是php命名空间

但log4php似乎需要转换为

的java包名称空间

instance.my.class.space

然后log4php将自动读取任何子命名记录器的子类,例如

instance.my.class.space.sub

不再向配置文件中添加任何行