我第一次与 Jetty 一起使用 logback。我一切正常,但我确实有一件烦人的事情,我无法弄清楚。一旦 Jetty 启动,我就会开始得到一个包含以下内容的日志文件:

2013-03-02 11:19:23.933:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\contexts]: {}
2013-03-02 11:19:24.646:DBUG:oeju.Scanner:scanned [C:\Users\willie\AppData\Local\Temp\context5868271910991031759deploy]: {}
2013-03-02 11:19:24.938:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\webapps]: {}
2013-03-02 11:19:24.943:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\contexts]: {}
2013-03-02 11:19:25.655:DBUG:oeju.Scanner:scanned [C:\Users\willie\AppData\Local\Temp\context5868271910991031759deploy]: {}
2013-03-02 11:19:25.948:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\webapps]: {}
2013-03-02 11:19:25.952:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\contexts]: {}
2013-03-02 11:19:26.665:DBUG:oeju.Scanner:scanned [C:\Users\willie\AppData\Local\Temp\context5868271910991031759deploy]: {}
2013-03-02 11:19:26.958:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\webapps]: {}
2013-03-02 11:19:26.963:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\contexts]: {}
2013-03-02 11:19:27.675:DBUG:oeju.Scanner:scanned [C:\Users\willie\AppData\Local\Temp\context5868271910991031759deploy]: {}
2013-03-02 11:19:27.968:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\webapps]: {}
2013-03-02 11:19:27.973:DBUG:oeju.Scanner:scanned [C:\Code\jetty-8\contexts]: {}

logback 中过滤的语法有点神秘,我不知道如何告诉 logback 忽略这些扫描事件。我已经尝试过显而易见的
<filter class="oeju.Scanner" />

但它不起作用。任何人都可以在这方面给我一点帮助吗?

最佳答案

您看到的日志格式不是 logback

2013-03-02 11:19:26.665:DBUG:oeju.Scanner:scanned ....

这是 Jetty 自己的内部 StdErrLog 生成的日志格式。
所以用 logback 过滤掉它是行不通的(还)。

如何在 Jetty 中使 logback 工作

首先,确保您的服务器类路径中存在 slf4j-api 和 logback jar。

完成此操作的最简单方法是将它们放入 ${jetty.home}/lib/ext/ 中,并通过在命令行上快速检查来验证它们是否存在。
$ java -jar start.jar --version

这将向您显示服务器类路径中的内容。

现在开始 jetty 。应该检测到 slf4j-api 类,并且内部日志记录从 StdErrLog 切换到 Slf4jLog

此时你只需要配置 logback。通常带有 ${jetty.home}/resources/logback.xml 文件。 (参见 logback documentation 了解 details )

oeju.Scanner 的含义

至于 oeju.Scanner 部分,这是 StdErrLog 为命名记录器 org.eclipse.jetty.util.Scanner 生成的缩写的完全限定类名。看看它如何只使用每个包命名空间段的第一个字母来形成 oeju

如何在 logback 中过滤 Scanner 事件

在您的 logback.xml 中,使用以下内容代替您的问题,将该特定类的日志记录级别设置为 INFO。

<logger name="org.eclipse.jetty.util.Scanner" level="info" />

关于jetty - 使用 logback 过滤掉扫描仪事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15176797/

10-15 14:01