Jetty日志主要有两种:访问日志和应用日志。访问日志主要记录客户端访问jetty的每一个请求,格式可以自定义;应用日志需要在应用中配置日志格式文件。
Jetty自定义访问日志格式必须使用外部jar,具体配置方式可以参考如下链接https://logback.qos.ch/access.html#jetty
1.引用3个jar到lib/ext包中logback-access-1.1.7.jar and logback-core-1.1.7.jar and slf4j-api-1.7.25.jar
2.修改etc/jetty.xml文件
<Set name="handler"> <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> <Set name="handlers"> <Array type="org.eclipse.jetty.server.Handler"> <Item> <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/> </Item> <Item> <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/> </Item> <Item> <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/> </Item> </Array> </Set> </New> </Set> <Ref id="RequestLog"> <Set name="requestLog"> <New id="requestLogImpl" class="ch.qos.logback.access.jetty.RequestLogImpl"> <Set name="name">logback-access</Set> <Set name="resource">/logback-access.xml</Set> <Call name="start"/> </New> </Set> </Ref>
3.在logback-access.xml配置输出格式
<configuration> <!-- always a good activate OnConsoleStatusListener --> <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" /> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/access.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/access.%d{yyyy-MM-dd}.log.zip</fileNamePattern> </rollingPolicy> <encoder> <pattern>{"remote_addr":"%h","http_user_agent":"%i{User-Agent}","time_local":"%date{yyyy-MM-dd HH:mm:ss.SSS}","request":"%r","service_host":"%A","service_name":"%v","status":"%s","body_bytes_sent":"%b","request_time":"%D","app_name":"appname"}</pattern> </encoder> </appender> <appender-ref ref="FILE" /> </configuration>
参考地址https://logback.qos.ch/manual/layouts.html#AccessPatternLayout