Nginx日志格式化输出,日志切割
发布时间: 2024-2-28
文章作者: myluzh
分类名称: Nginx
0x01 日志格式化输出
root@iZbp12bkuvg20e1j3y9gtvZ:/etc/logrotate.d# cat /etc/nginx/nginx.conf
http {
# ...
log_format main escape=none
'$remote_addr - $remote_user [$time_iso8601] "$request_method $scheme://$host$request_uri" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" time=$request_time upstream_addr=$upstream_addr'
'\n $request_body';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
# ...
当你定义Nginx日志格式时,你可以指定使用哪些变量来记录不同的信息。在你提供的日志格式中,每个变量都代表着不同的信息
-
$remote_addr: 客户端的IP地址。
-
$remote_user: 客户端发送请求时提供的用户名。通常情况下为空。
-
[$time_local]: 记录访问时间,使用本地时间格式。
-
"$request_method: 请求方法,如GET、POST等。
-
$scheme: 请求所使用的协议方案,如http或https。
-
$host: 请求的主机名。
-
$request_uri: 包含请求的URI和查询字符串的完整请求地址。
-
$args: 请求中的参数。
-
$status: 服务器响应的状态码。
-
$body_bytes_sent: 发送给客户端的字节数。
-
"$http_referer": 表示请求来源的URL。
-
"$http_user_agent": 客户端的User-Agent,用于标识客户端的浏览器和操作系统等信息。
-
"$http_x_forwarded_for": X-Forwarded-For头部,用于记录客户端真实IP地址,当请求通过代理服务器时会添加该头部。
这些变量可以帮助你记录非常详细的访问日志,方便后续分析和监控。
0x02 日志切割
root@iZbp12bkuvg20e1j3y9gtvZ:/etc/logrotate.d# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
这段代码是用于配置Nginx日志分割的Logrotate规则。
-
daily: 每天执行一次日志分割。
-
missingok: 如果日志文件不存在,不报错并继续执行。
-
rotate 14: 保留14个旧日志文件,旧的日志文件会被依次重命名为filename.1、filename.2等。
-
compress: 对旧的日志文件进行压缩。
-
delaycompress: 在下一次日志分割时才对上一次的日志文件进行压缩。
-
notifempty: 如果日志文件为空,不进行日志分割。
-
create 0640 www-data adm: 创建新的日志文件时,设置文件权限为0640,属主为www-data,属组为adm。
-
sharedscripts: 在所有的日志文件都处理完毕后才执行一次脚本。
-
prerotate和postrotate: 在日志文件被分割前后执行的命令。
-
invoke-rc.d nginx rotate >/dev/null 2>&1: 在日志分割后通过invoke-rc.d命令重启Nginx服务。
总的来说,这段配置代码指示Logrotate每天对Nginx的日志文件进行分割,保留14个旧日志文件,并在分割前后执行相应的脚本和命令。0x02 日志切割
日志文件的分割配置通常会在logrotate等工具中进行设置。你可以检查一下系统中的logrotate配置文件,通常在/etc/logrotate.d/目录下,找到与Nginx相关的配置文件,查看是否有针对Nginx日志文件的分割配置。 标签: nginx logging logrotate log_format access_log error_log
手机扫一扫访问