• Jetty print all request log with Logback


    一。准备Logback包放入$JETTY_HOME/lib/ext中

    -rw-r--r-- 1 conversant conversant   93525 Apr  2  2014 logback-access-1.1.2.jar
    -rw-r--r-- 1 conversant conversant  270747 Apr  2  2014 logback-classic-1.1.2.jar
    -rw-r--r-- 1 conversant conversant  427729 Apr  2  2014 logback-core-1.1.2.jar

    二。配置logback-access.xml并保存

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
     <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" /> 
    
    
      <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
          <fileNamePattern>${log.home}/requests/%d{yyyy-MM-dd}_request.log</fileNamePattern>
        </rollingPolicy>
    
        <encoder>
          <pattern>combined</pattern>
        </encoder>
      </appender>
     
      <appender name="all_requests" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>      
          <pattern> [%t] -%fullRequest - %fullResponse</pattern>
        </encoder>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log.home}/requests/%d{yyyy-MM-dd}_all.log
                </fileNamePattern>
            </rollingPolicy>
      </appender>
            
      <appender-ref ref="all_requests"/>
       <appender-ref ref="FILE"/>
    </configuration>

    三。加载使用logback-access.xml

    例如:jetty-requestlog-logback.xml,其具体内容如下:

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
    
    <!-- =============================================================== -->
    <!-- Configure the Jetty Request Log                                 -->
    <!-- =============================================================== -->
    <Configure id="Server" class="org.eclipse.jetty.server.Server">
    
      <!-- =========================================================== -->
      <!-- Configure Request Log -->
      <!-- =========================================================== -->
      <Ref refid="Handlers">
        <Call name="addHandler">
          <Arg>
            <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler">
              <Set name="requestLog">
                  <New id="requestLogImpl" class="ch.qos.logback.access.jetty.RequestLogImpl">
                   <Set name="fileName">/opt/app/xxxx/server/conf/logback-access.xml</Set>
                </New>
              </Set>
            </New>
          </Arg>
        </Call>
      </Ref>
    
    </Configure>

    四。配置TeeFilter,打印 all_requests

    路径:webapp/web.xml,增加如下代码

    <filter>
            <filter-name>TeeFilter</filter-name>
            <filter-class>ch.qos.logback.access.servlet.TeeFilter</filter-class>
        </filter>
    
        <filter-mapping>
            <filter-name>TeeFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    五。设置启动脚本

    修改JETTY_ARGS 参数加载jetty-requestlog-logback.xml文件

    JETTY_ARGS="lib=$JETTY_HOME/lib $APP_HOME/conf/jetty/jetty.xml $APP_HOME/conf/jetty/jetty-requestlog-logback.xml OPTIONS=jsp"

    六。重启并查看全部日志

    cd ${log.home}/requests 查看 ${yyyy-MM-dd}_all.log 文件,即可看到输出的全部日志

    总结

    该配置对于需要回去http所有请求时合适。但是对于线上的生产环境由于效率以及存储空间问题,则需要关闭此配置

  • 相关阅读:
    centos出现“FirewallD is not running”怎么办
    百度编辑器(Ueditor)最新版(1.4.3.3)插入锚点失败原因分析及BUG修复
    centos rm -rf 恢复删除的文件
    php实现粘贴截图并完成上传功能
    微信网页授权java实现
    JAVA使用POI读取EXCEL文件的简单model
    java读取excel文件数据
    java文件操作(读流)
    oracle 10g正则表达式 REGEXP_LIKE 用法
    Oracle正则表达式函数:regexp_like、regexp_substr、regexp_instr、regexp_replace
  • 原文地址:https://www.cnblogs.com/lily-tiantian/p/4326783.html
Copyright © 2020-2023  润新知