系统日志格式

本章节介绍系统日志的格式。

日志格式

log_format syslog '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

日志格式说明

  • $remote_addr:客户端 IP 地址
  • $remote_user:客户端用户名
  • [$time_local]:本地时间
  • "$request":请求行
  • $status:响应状态码
  • $body_bytes_sent:发送的字节数
  • "$http_referer":请求来源
  • "$http_user_agent":客户端浏览器信息

日志格式原理: 日志格式用于定义日志消息的内容和格式,Nginx 支持自定义日志格式,可以根据需求定义日志格式。日志格式可以包含 Nginx 变量,如 $remote_addr$remote_user$time_local 等。

自定义格式

log_format custom '$remote_addr - $remote_user [$time_local] '
                   '"$request" $status $body_bytes_sent '
                   '"$http_referer" "$http_user_agent" '
                   '$request_time $upstream_response_time';

自定义格式说明

  • $request_time:请求处理时间
  • $upstream_response_time:上游服务器响应时间

自定义格式原理: 自定义格式可以根据需求添加更多的日志信息,如请求处理时间、上游服务器响应时间等,便于性能分析和故障排查。

使用自定义格式

access_log syslog:server=127.0.0.1:514,tag=nginx,severity=info,facility=local7 custom;

使用自定义格式说明

  • custom:使用自定义的日志格式

常用变量

变量说明示例
$remote_addr客户端 IP 地址192.168.1.1
$remote_user客户端用户名admin
$time_local本地时间10/Jan/2024:10:00:00 +0800
$request请求行GET / HTTP/1.1
$status响应状态码200
$body_bytes_sent发送的字节数1024
$http_referer请求来源https://example.com
$http_user_agent客户端浏览器信息Mozilla/5.0
$request_time请求处理时间0.123
$upstream_response_time上游服务器响应时间0.123
$upstream_addr上游服务器地址192.168.1.2:80
$upstream_status上游服务器状态码200

最佳实践

  1. 使用标准格式:使用标准格式,便于日志分析
  2. 添加必要信息:添加必要的日志信息,如 IP 地址、请求时间、响应状态码等
  3. 避免敏感信息:避免记录敏感信息,如密码、令牌等
  4. 控制日志大小:控制日志大小,避免占用过多磁盘空间
  5. 定期清理:定期清理旧日志,释放磁盘空间