【发布时间】:2010-10-21 14:58:29
【问题描述】:
我想通过由(阈值与模式)组成的过滤器过滤我的 log4net 输出。因此,我只想允许模式为“x”的日志只有在级别为“ERROR”(或更高)时才允许,并且只有模式为“y”的日志才允许级别为“INFO”(或更高)。我可以在一个附加程序中执行此操作,还是需要两个附加程序,每个附加程序都有自己的模式过滤器和阈值?
【问题讨论】:
标签: log4net
我想通过由(阈值与模式)组成的过滤器过滤我的 log4net 输出。因此,我只想允许模式为“x”的日志只有在级别为“ERROR”(或更高)时才允许,并且只有模式为“y”的日志才允许级别为“INFO”(或更高)。我可以在一个附加程序中执行此操作,还是需要两个附加程序,每个附加程序都有自己的模式过滤器和阈值?
【问题讨论】:
标签: log4net
Log4net 允许您链接过滤器,但这只能用作“OR”。我认为你也可以让它做一个“AND”操作,但不是你想要的。我会编写自己的过滤器来检查级别和模式是否匹配。然后链接此过滤器的两个实例,使其检查第一个条件和第二个条件(“OR”操作)。不要忘记最后的DenyAllFilter。
我写了一个自定义过滤器once,也许这对创建你的过滤器有帮助。
两个附加程序可能是一种解决方法,但如果您想登录到一个文件,您会遇到可以解决的锁定问题(性能损失)。
【讨论】:
您应该看看要求 AND 和 OR 过滤器的人:Log4Net filters "OR"
据我所知,目前还没有任何实现,但如果你真的需要它,你可以自己继承 FilterSkeleton 来解决问题。
【讨论】: