SpringBoot配置tomcat access日志

news/2024/6/18 2:53:17 标签: spring boot, tomcat, 后端

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

tomcat_access_1">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也可以设置指定的模式,如下:

  • common 模式: %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#Access_Log_Valve


http://www.niftyadmin.cn/n/5487977.html

相关文章

24年湖南教资认定即将开始,别被照片卡审!

24年湖南教资认定即将开始,别被照片卡审!

【计算机毕业设计】基于SSM+Vue的新能源汽车在线租赁管理系统【源码+lw+部署文档】

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,新能源汽车在线租赁当然也不能排除在外。新能源汽车在线租赁是以实际运用为开发背景,运用软件工程开发方法&…

MySQL--日志管理

目录 一、错误日志 Errlog 1.作用 2.默认文件 3.配置方法 二、慢日志 Slowlog 1.作用 2.配置 3.查看慢日志 4.分析慢日志 5.推荐工具 三、二进制日志 Binlog 一、错误日志 Errlog 1.作用 记录MySQL从启动开始的状态、警告、错误 2.默认文件 3.配置方法 1&#xf…

红队攻防渗透技术实战流程:云安全之云原生安全:K8s搭建及节点漏洞利用

红队云攻防实战 1.云原生-K8s安全-名词架构&各攻击点1.1 云原生-K8s安全-概念1.2 云原生-K8s安全-K8S集群架构解释1.2.1 K8s安全-K8S集群架构-Master节点1.2.2 K8s安全-K8S集群架构-Node节点1.2.3 K8s安全-K8S集群架构-Pod容器1.3 云原生安全-K8s安全-K8S集群攻击点 `(重点…

Android 深入系统源码探讨 Activity、Window 和 View 的关系与实践

文章目录 1、概括2、Android Window 设计2.1、Window 类2.2、PhoneWindow2.3、WindowManager2.4、ViewRootImpl2.5、DecorView 3、Android Activity 设计3.1、Activity的基本概念3.2.、Activity的生命周期3.3、Activity的内部结构 4、Android View 设计4.1、View的基本概念4.2、…

jupyter notebook 实现联邦学习模型

联邦学习(Federated Learning)是一种机器学习框架,它允许多个参与方(例如,移动设备或服务器)在本地数据集上训练模型,而无需将数据集中到一个位置。这有助于保护数据隐私,并允许在分布式环境中进行模型训练。 要在Jupyter Notebook中实现联邦学习模型,你可以遵循以下…

挖矿宝藏之系统日志

什么是日志? 日志是指系统或应用程序在运行过程中产生的记录文件,这些文件记录了系统或应用程序的运行情况、错误信息、用户操作等。 日志的主要作用 记录信息:日志可以记录系统或应用程序的启动、运行、停止等状态信息,以及用户的…

探索移动云服务:构建高效移动互联网应用的最佳实践

一、移动云服务简介 官网:https://ecloud.10086.cn 移动云,或称为移动云计算,是通过无线网络向移动设备用户提供云计算服务的技术。它使用户能够通过智能手机、平板电脑和笔记本电脑等各类移动设备,在任何时间、任何地点便捷地访…