SpringBoot如何配置tomcat access日志

 更新时间:2024年05月27日 10:52:54   作者:yifanghub  
access日志记录了每一个HTTP请求的信息,包括请求的来源、请求的资源、响应状态码等,常常用来做数据统计、性能监控,比如通过分析访问日志,可以发现性能瓶颈和优化机会,提升应用的响应速度等,这篇文章主要介绍了SpringBoot配置tomcat access日志,需要的朋友可以参考下

Spring Boot使用嵌入式的Tomcat作为默认的Web服务器,可以通过配置文件方式来开启和定制access日志。access日志记录了每一个HTTP请求的信息,包括请求的来源、请求的资源、响应状态码等,常常用来做数据统计、性能监控,比如通过分析访问日志,可以发现性能瓶颈和优化机会,提升应用的响应速度等。

tomcat access日志配置

以yml文件为例:

server:
  # 配置access日志
  tomcat:
    accesslog:
      enabled: true
      renameOnRotate: true
      pattern: '%{yyyy-MM-dd HH:mm:ss}t "%h" "%{X-FORWARDED-FOR}i" "%l" "%u" "%m" "%U" "%H" "%s" "%b" "%q" "%{Referer}i" "%{User-Agent}i" "%I" "%T"'
      directory: /logs/access/
      prefix: access_log
      suffix: .log

参数说明:

enabled 是否开启access日志
renameOnRotate 是否按天切割日志。切割后的日志要按yyyyMMdd重命名
pattern 日志打印格式
directory 日志保存文件路径
prefix 日志的前缀
suffix 日志的后缀

除了上面几个配置参数,其他常用参数还有:

file-date-format: .yyyy-MM-dd  
basedir: d:/logs
rotate: true
含义如下:
file-date-format 在日志文件名称中使用定制的日期格式,日志的格式也决定了日志文件翻转的频率。如果想每小时翻转一次,可以定义为“yyyy-MM-dd.HH”;
basedir 日志文件存放的基础目录
rotate 指定是否启用日志轮转。默认为true。这个参数决定是否需要切换切换日志文件,如果被设置为false,则日志文件不会切换,即所有文件打到同一个日志文件中,并且file-date-format参数也会被忽略

pattern参数配置

比较复杂的是pattern参数配置,它由一系列的格式标识符组成,这些标识符用于从当前请求和响应中提取信息

%a - 远程IP地址
%A - 本地IP地址
%b - 发送的字节数(Bytes sent), 不包括HTTP headers的字节,如果为0则展示'-'
%B - 发送的字节数(Bytes sent), 不包括HTTP headers的字节
%h - 远程主机名称(如果resolveHosts为false则展示IP)
%H - 请求协议
%l - 远程用户名,始终为'-'(Remote logical username from identd)
%m - 请求的方法(GET, POST等)%p - 接受请求的本地端口
%q - 查询字符串,如果存在,有一个前置的'?'
%r - 请求的第一行(包括请求方法和请求的URI)
%s - response的HTTP状态码(200,404等)%S - 用户的session ID
%t - 日期和时间,Common Log Format格式
%u - 被认证的远程用户, 不存在则展示'-'
%U - 请求URL路径%v - 本地服务名
%D - 处理请求的时间,单位为毫秒
%T - 处理请求的时间,单位为秒%I - 当前请求的线程名(can compare later with stacktraces)
%I - 当前请求线程名(可与堆栈跟踪进行比较)。

access log 也支持将cookie、header、session或者其他在ServletRequest中的对象信息打印到日志中,其配置遵循Apache配置的格式({xxx}指值的名称):

  • %{xxx}i - 记录名称为xxx的请求头的值。
  • %{xxx}o - 记录名称为xxx的响应头的值。
  • %{xxx}c - 记录名称为xxx的Cookie的值。
  • %{xxx}r - 记录名称为xxx的ServletRequest属性的值。
  • %{xxx}s - 记录名称为xxx的HttpSession属性的值。
  • %{xxx}p - 记录本地(服务器)端口(xxx==local)或远程(客户端)端口(xxx=remote)。
  • %{xxx}t - 使用增强的SimpleDateFormat模式xxx记录请求结束时的时间戳。

pattern也可以设置指定的模式,如下:

  • ommon 模式: %h %l %u %t "%r" %s %b 这是Common Log Format的定义,记录了客户端IP地址、远程登录名、用户、时间、请求的第一行、状态码和响应字节数。
  • combined 模式: %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i" 在common模式的基础上,增加了Referer和User-Agent请求头的信息。                       

参考链接:
https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html

到此这篇关于SpringBoot配置tomcat access日志的文章就介绍到这了,更多相关SpringBoot配置tomcat access日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 我从jdk1.8升级到jdk11所遇到的坑都有这些

    我从jdk1.8升级到jdk11所遇到的坑都有这些

    这篇文章主要介绍了从jdk1.8升级到jdk11将会遇到的一些坑,本文给大家分享解决方案对大家的学习或工作具有参考借鉴价值,对jdk1.8升级到jdk11相关知识感兴趣的朋友,快来看看吧
    2021-08-08
  • 一文详解Java中的可变对象(Mutable)与不可变对象(Immutable)

    一文详解Java中的可变对象(Mutable)与不可变对象(Immutable)

    如何在 Java 中创建不可变对象?我以前以为所有对象都是不可变的,因为如果你改变一个 String 实例的内容,它总是会创建一个新的 String 对象并指向该对象,在本文中,我不仅将分享在 Java 中Immutable的步骤,还将讨论可变对象与不可变对象及其优缺点
    2023-11-11
  • java高效文件流读写操作详解

    java高效文件流读写操作详解

    这篇文章主要介绍了java高效文件流读写操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Java泛型T,E,K,V,N,?与Object区别和含义

    Java泛型T,E,K,V,N,?与Object区别和含义

    Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。本文将详细讲讲Java泛型T、E、K、V、N、?和Object区别和含义,需要发可以参考一下
    2022-03-03
  • Jackson使用示例-Bean、XML、Json之间相互转换

    Jackson使用示例-Bean、XML、Json之间相互转换

    Jackson是一个强大工具,可用于Json、XML、实体之间的相互转换,JacksonXmlElementWrapper用于指定List等集合类,外围标签名,JacksonXmlProperty指定包装标签名,或者指定标签内部属性名,JacksonXmlRootElement指定生成xml根标签的名字,JacksonXmlText指定当前这个值
    2024-05-05
  • Java Spring 控制反转(IOC)容器详解

    Java Spring 控制反转(IOC)容器详解

    这篇文章主要为大家详细介绍了Spring控制反转IoC入门使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • IDEA 端口占用的解决方法(推荐)

    IDEA 端口占用的解决方法(推荐)

    这篇文章主要介绍了IDEA 端口占用的解决方法,本文通过两种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 利用Lambda表达式创建新线程案例

    利用Lambda表达式创建新线程案例

    这篇文章主要介绍了利用Lambda表达式创建新线程案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 详解Spring Cloud 熔断机制--断路器

    详解Spring Cloud 熔断机制--断路器

    这篇文章主要介绍了详解Spring Cloud 熔断机制--断路器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Java的反射机制之获取class详解

    Java的反射机制之获取class详解

    这篇文章主要介绍了Java的反射机制之获取class详解,Class类表示一个类或接口的元数据,通过它可以获取到类或接口的构造函数、方法、字段、注解等信息,也能够创建对象、调用方法等,需要的朋友可以参考下
    2023-09-09

最新评论