[关闭]
@delight 2014-05-02T12:33:05.000000Z 字数 2312 阅读 3653

使用logback记录jetty web的log

java logback xml

分为以下几种情况:

a. 在web应用程序中使用logback.

在maven的配置文件pom.xml中添加:

  1. <dependency>
  2. <groupId>ch.qos.logback</groupId>
  3. <artifactId>logback-classic</artifactId>
  4. <version>${logback-version}</version>
  5. </dependency>

其中logback-version自己在properties中指定,然后在/resources中新建一个logback.xml,填入相应的配置。

b. 使用logback记录jetty access log.

在jetty的resources目录中新建jetty-logging.properties文件,填入如下配置:

  1. org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog

并在 ${jetty.home}/lib/ext/中放入 logback-access-${version}.jarlogback-core-${version}.jar两个文件。

编辑${jetty.home}/etc/jetty.xml文件,并加入以下配置:

  1. <Set name="handler">
  2. <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
  3. <Set name="handlers">
  4. <Array type="org.eclipse.jetty.server.Handler">
  5. <Item>
  6. <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
  7. </Item>
  8. <Item>
  9. <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
  10. </Item>
  11. <Item>
  12. <New id="RequestLogHandler"
  13. class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
  14. </Item>
  15. </Array>
  16. </Set>
  17. </New>
  18. </Set>
  19. <Ref id="RequestLogHandler">
  20. <Set name="requestLog">
  21. <New id="requestLogImpl" class="ch.qos.logback.access.jetty.RequestLogImpl">
  22. </New>
  23. </Set>
  24. </Ref>

其中第一段原来已经存在,只要填入

  1. <Item>
  2. <New id="RequestLogHandler" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
  3. </Item>

即可.

然后,在 etc/中新建一个logback-access.xml,填入如下配置:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <!-- always a good activate OnConsoleStatusListener -->
  4. <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
  5. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  6. <file>/var/app/log/Push-server/jetty_access.log</file>
  7. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  8. <fileNamePattern>/var/app/log/Push-server/jetty_access.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
  9. </rollingPolicy>
  10. <encoder>
  11. <pattern>combined</pattern>
  12. </encoder>
  13. </appender>
  14. <appender-ref ref="FILE" />
  15. </configuration>

上面的路径请自定义。

PS: logback的一些配置技巧:
可以通过指定filter来限制输出的内容。如:

  1. <appender name="push" class="ch.qos.logback.core.rolling.RollingFileAppender">
  2. <filter class="ch.qos.logback.classic.filter.ThresholdFilter" >
  3. <level>WARN</level>
  4. </filter>
  5. ...
  6. </appender>

这样就限制了push这个appender只输出WARN等级以上的日志。

可以通过

  1. <logger name="org.cometd" level="WARN">
  2. <appender-ref ref="webapp" />
  3. </logger>

来将某个logger的指定等级的log输出到指定appender。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注