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日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 多个SpringBoot项目采用redis实现Session共享功能

    多个SpringBoot项目采用redis实现Session共享功能

    这篇文章主要介绍了多个SpringBoot项目采用redis实现Session共享,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java使用MulticastSocket实现群聊应用程序

    Java使用MulticastSocket实现群聊应用程序

    这篇文章主要为大家详细介绍了Java使用MulticastSocket实现群聊应用程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Java 数组转List的四种方式小结

    Java 数组转List的四种方式小结

    最近看了下数组转List的实现方法,总共有4种,本文就详细的介绍一下,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • @Transactional解读(作用、失效场景与解决方式)

    @Transactional解读(作用、失效场景与解决方式)

    这篇文章主要介绍了关于@Transactional作用、失效场景与解决方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java实现简单局域网聊天室

    Java实现简单局域网聊天室

    这篇文章主要为大家详细介绍了Java实现简单局域网聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • java中的AWT事件处理问题

    java中的AWT事件处理问题

    这篇文章主要介绍了java中的AWT事件处理问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • springboot 配置DRUID数据源的方法实例分析

    springboot 配置DRUID数据源的方法实例分析

    这篇文章主要介绍了springboot 配置DRUID数据源的方法,结合实例形式分析了springboot 配置阿里DRUID数据源的具体步骤与相关操作技巧,需要的朋友可以参考下
    2019-12-12
  • Java字符串原理分析之String是否可变

    Java字符串原理分析之String是否可变

    当我们在求职时,面试官很喜欢问我们关于String的一些原理性知识,比如String的不可变性、字符串的内存分配等,为了让大家更好地应对面试,并理解String的底层设计,接下来会给大家聊聊String的一些原理,比如String为什么具有不可变性,需要的朋友可以参考下
    2023-05-05
  • Java使用pdfbox实现给pdf文件加图片水印

    Java使用pdfbox实现给pdf文件加图片水印

    有时候需要给pdf加水印,市面上工具都是收费的要会员,还是自食其力吧;尝试过 spire.pdf.free 那个超过10页就不行了!所以本文还是使用了pdfbox,感兴趣的可以了解一下
    2022-11-11
  • MyBatis-Plus逻辑删除和字段自动填充的实现

    MyBatis-Plus逻辑删除和字段自动填充的实现

    本文主要介绍了MyBatis-Plus逻辑删除和字段自动填充的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08

最新评论