(1). Spring Boot启用AccessLog
# 配置日志目录
server.tomcat.basedir=.
# 启用accesslog
server.tomcat.accesslog.enabled=true
# 日志输出目录:basedir+directory=./logs
server.tomcat.accesslog.directory=logs
# 输出表达式
server.tomcat.accesslog.pattern=%t %h %r%q %s %b %D
# 启用缓存
server.tomcat.accesslog.buffered=true
# 日志文件名称
server.tomcat.accesslog.prefix=access_log
# 日志文件名称(./logs/access_log_${yyyy-MM-dd})
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd
# 日志文件名称
server.tomcat.accesslog.suffix=.log
# 是否延迟在文件名中包含日期戳,直到旋转时间
server.tomcat.accesslog.rename-on-rotate=false
# 设置请求的IP地址,主机名,协议和端口的请求属性
server.tomcat.accesslog.request-attributes-enabled=false
# 是否启用访问日志轮换
server.tomcat.accesslog.rotate=true
(2). Pattern的配置
%a - Remote IP address,远程ip地址,注意不一定是原始ip地址,中间可能经过nginx等的转发
%A - Local IP address,本地ip
%b - Bytes sent, excluding HTTP headers, or '-' if no bytes were sent
%B - Bytes sent, excluding HTTP headers
%h - Remote host name (or IP address if enableLookups for the connector is false),远程主机名称(如果resolveHosts为false则展示IP)
%H - Request protocol,请求协议
%l - Remote logical username from identd (always returns '-')
%m - Request method,请求方法(GET,POST)
%p - Local port,接受请求的本地端口
%q - Query string (prepended with a '?' if it exists, otherwise an empty string
%r - First line of the request,HTTP请求的第一行(包括请求方法,请求的URI)
%s - HTTP status code of the response,HTTP的响应代码,如:200,404
%S - User session ID
%t - Date and time, in Common Log Format format,日期和时间,Common Log Format格式
%u - Remote user that was authenticated
%U - Requested URL path
%v - Local server name
%D - Time taken to process the request, in millis,处理请求的时间,单位毫秒
%T - Time taken to process the request, in seconds,处理请求的时间,单位秒
%I - current Request thread name (can compare later with stacktraces),当前请求的线程名,可以和打印的log对比查找问题.
(3). Pattern获取cookie/header/session内容
Access log 也支持将cookie、header、session或者其他在ServletRequest中的对象信息打印到日志中,其配置遵循Apache配置的格式({xxx}指值的名称:
%{xxx}i for incoming headers,request header信息
%{xxx}o for outgoing response headers,response header信息
%{xxx}c for a specific cookie
%{xxx}r xxx is an attribute in the ServletRequest
%{xxx}s xxx is an attribute in the HttpSession
%{xxx}t xxx is an enhanced SimpleDateFormat pattern (see Configuration Reference document for details on supported time patterns)
(4). Pattern内置模板
Access log内置了两个日志格式模板,可以直接指定pattern为模板名称,如:
server.tomcat.accesslog.pattern=common
server.tomcat.accesslog.pattern=combined
common - %h %l %u %t "%r" %s %b
远程主机名称
远程用户名
被认证的远程用户
日期和时间
请求的第一行
response code
发送的字节数
combined - %h %l %u %t "%r" %s %b "%{Referer}i" "%{User-Agent}i"
远程主机名称
远程用户名
被认证的远程用户
日期和时间
请求的第一行
response code
发送的字节数
request header的Referer信息
request header的User-Agent信息
(5). Pattern常用的配置
%t %a "%r" %s (%D ms)
日期和时间
请求来自的IP(不一定是原始IP)
请求第一行
response code
响应时间(毫秒)
%t [%I] %{X-Forwarded-For}i %a %r %s (%D ms)
日期和时间
线程名
原始IP
请求来自的IP(不一定是原始IP)
请求第一行
response code
响应时间(毫秒)