我使用Jetty 6.1.24开发Web服务,我的代码使用slf4j,就像Jetty一样,并且日志记录工作正常。我想要做的是从我的代码获取调试日志,但不是从Jetty (它太冗长),但我无法阻止它记录调试信息。有系统属性可以设置调试模式(-DDEBUG),但不能取消设置调试模式。
我的回溯日志级别由启动脚本通过设置系统属性“loglevel”来设置,然后将其设置在我的resources / logback.xml中:
<configuration>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d [%thread] %level %logger - %m%n</Pattern>
</layout>
</appender>
<root level="${loglevel:-INFO}">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
Jetty要么始终生成调试日志,如果未启用调试,则记录器会忽略该日志,否则它将使用logger.isDebugEnabled()来设置调试模式。有没有人对如何使这个工作有任何想法?
答案 0 :(得分:4)
将slf4j的jar放入{jetty} / lib / ext后,我遇到了同样的问题 我通过将此logback.xml文件放在{jetty} / resources
中解决了这个问题<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT" />
</root>
</configuration>
请注意'level =“info”'
的说明强>:
在此配置中,Jetty使用Logger实现Slf4jLog
反过来,Slf4jLog委托Logback的实现。
logback.xml告诉我们记录日志级别并使用STDOUT
从此处可以看到标准的Jetty行为,但您可以通过logback.xml配置日志记录级别
与默认配置一样,如果需要,可以使用jetty-logging.xml
当然,你可以绕过Jetty的PrintStreams并使用Logback的Appenders
这里是您使用jetty-logging.xml时的流程:
SomeClass --> Slf4JLog --> ConsoleAppender--> STDOUT --> RolloverFileOutputStream
(Jetty) (Jetty) (Logback) (OS) (Jetty)
的修订强>:
码头7.2.2
slf4j 1.6.1
Logback 0.9.26
答案 1 :(得分:1)
仅在使用StdErr记录器时才使用-DDEBUG
选项。如果设置为使用slf4j日志记录(例如,您已将slf4j添加到类路径中),那么所有配置都将通过slf4j实现进行处理,系统属性将被忽略。
您要做的是配置logback以关闭jetty日志类别的调试。
喜欢的东西
<logger name="org.mortbay.log" level="INFO" />
答案 2 :(得分:0)