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所有请求时合适。但是对于线上的生产环境由于效率以及存储空间问题,则需要关闭此配置

时间: 2024-07-28 16:36:30

Jetty print all request log with Logback的相关文章

打印函数print与debug.log的区别

public static void print(object message) { Debug.Log(message); } 没看错,实现就是通过Debug.Log来完成的. 所以Print就是Debug.Log的一个简单封装

【Log】logback指定配置文件(二)

摘自:https://www.cnblogs.com/h--d/p/5671528.html [Log]logback指定配置文件(二) 通常我们在不同的环境使用不同的日志配置文件,本章讲指定logback的配置文件,如何使用logback参照[Log]logback的配置和使用(一) 写一个配置加载类,注意JoranConfigurator这个导入的是ch.qos.logback.classic.joran.JoranConfigurator包下面的 1 package com.test; 2

【Log】logback的配置和使用

logback介绍 Logback是由log4j创始人设计的又一个开源日志组件.logback当前分成三个模块:logback-core,logback- classic和logback-access.logback-core是其它两个模块的基础模块.logback-classic是log4j的一个 改良版本.此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging.logback-access访问模块与Servlet

How to log in Spring with SLF4J and Logback

1. Introduction 1.1. Simple Logging Facade for Java(SL4J) The  SLF4J serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback and log4j. SLF4J allows the end-user to plug in the desired logging frame

Jetty使用教程(四:28-30)—Jetty开发指南

二十八.延续机制支持 28.1 延续简介 延续是一种机制用来实现类似于Servlet 3.0异步功能的异步Servlet,但提供了一个简单易操作的接口. 28.1.1 为什么使用异步Servlets 不使用异步IO: 异步servlet的概念往往与异步IO或NIO的使用产生混淆.但是异步Servlets 和异步IO还是有主要不同点: HTTP请求通常很小并且位于一个单独的包,Servlets 很少在请求时阻塞. 许多responses 通常很小并且大小适合server缓冲,所以servlets

jetty

java容器 java容器很很多,tomcat.jetty.jboss.resin.weblogic.webspere等等. 有收费的,也有开源免费的,性能可能是有些许差异的,理论上,收费的应该比免费的,性能要要一些. 但是,用开源免费的来做巨大访问量的(比如千万PV)应用,也是毫无问题的,当前我们所处的技术浪潮,性能的瓶颈一般都在数据库上,在硬盘的访问上,而不是网络请求和响应. 已知互联网公司使用的java容器: jetty:google.美团 tomcat:yougou.com jetty官

Linux(redhat 5.8)下 安装jetty 部署 使用

首先须要安装JDK,自行解决 下载jetty安装包http://dist.codehaus.org/jetty/ 我下载的是8.1.15 tar -xzvf *.tar.gz 解压完之后,基本就能够用了 webapps下有一些demo的war包 启动jetty服务:java -jar start.jar  默认port8080 訪问http://localhost:8080就能够了 如今開始部署你自己的war包 增加你的war包已经有了,名字是abc.war 那么将该war包放到webapps以

[Jetty]基于Java Servlet的支持WebSocket的服务器

1. JDK安装 www.java.com/zh/download 2. Jetty下载与安装 download.eclipse.org/jetty,下载稳定版,解压到目标路径 2.1 启动Jetty 命令框中cd到根目录下,会看到有个start.jar启动文件,在该目录下,输入 java -jar start.jar 如果顺利的话,会输出以下log: 2012-10-22 16:02:24.988:INFO:oejs.Server:main: jetty-9.0.0-M2 2012-10-22

Jetty Session Persistence By Redis

Copy jar 到$JETTY_HOME/lib/ext目录下 -rw-rw-r--. 1 conversant conversant 100193 Sep 11 17:34 commons-pool-1.5.5.jar -rw-rw-r--. 1 conversant conversant 228268 Sep 11 17:34 jackson-core-asl-1.9.3.jar -rw-rw-r--. 1 conversant conversant 773019 Sep 11 17:34