【发布时间】:2018-02-20 12:08:16
【问题描述】:
我刚刚在我的应用程序中添加了一个嵌入式 Jetty/Jersey 服务器,它使用带有 slf4j 绑定的 log4j2 日志记录提供程序。日志库位于类路径中,Jetty 使用它们,如下所述:
https://www.eclipse.org/jetty/documentation/9.4.x/configuring-logging.html
这是一件好事,只是 Jetty 中的DEBUG 级别非常嘈杂,正如那里所提到的。
我有三个不同级别的附加程序(一个控制台和两个文件),其中一个的文件名是通过编程方式配置的,除此之外,配置在log4j2.properties 文件中指定。所以设置有点复杂,但它正是我需要的。
是否有一种简单的方法可以在处理消息字符串之前将 Jetty 调试消息转换为跟踪和/或仅根据包名称完全过滤掉调试消息?
我不认为转换日志记录级别很容易或不可能,但问一下也无妨。
就过滤而言,换句话说,我想根据包指定不同的级别,INFO 用于org.eclipse.jetty 和子包以TRACE 作为默认值,或者TRACE 用于我的默认为 INFO 的包和子包。理想情况下,这应该在一个地方完成,但并非必须如此。
我对 loggers 和 appender 仍然有些困惑,所以我部分地通过反复试验来完成这项工作。例如,rootLogger.level 似乎没有任何影响,所以我猜我无法通过rootLogger 指定过滤器。我发现的一些参考资料建议创建一个名称与特定类匹配的记录器,但我不确定这将如何解决这个问题——它是否适用于包/子包级别的过滤,如果是这样,我是否需要创建多个记录器都可以写入相同的附加程序?
【问题讨论】:
标签: logging log4j slf4j log4j2