从零开发短视频电商 Nginx日志格式详解、自定义日志格式、按天按月切割日志

Nginx日志类型

包括:error.log access_log

error.log 主要是处理http请求错误和nginx本身服务错误状态,按照不同的错误级别记录;

access_log 主要是记录处理每次http请求访问的状态;

日志主要实现方式是使用 log_format;

nginx记录的每次信息都可以当做一个变量,log_format就是将这些变量组合起来,记录到日志中去;

log_format的配置;

Syntax: log_format name [escape=default|json] string …;
Default: log_format combined "...";
Context: http (约束log_format的配置位置)

日志格式默认的是combined

默认的日志格式
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  /var/log/nginx/access.log  main;
修改日志格式

默认是没有请求时间的,我们来自定义下。

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

access_log  /var/log/nginx/laker.log  laker;

223.90.75.250 - - [08/Dec/2021:17:49:42 +0800] “GET /monitoring?width=200&height=50&graph=activeConnections HTTP/1.1” 200 4544 “http://laker.com/monitoring” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36” “-” 127.0.0.1:8889 0.044 0.044
其中0.044为44毫秒

Nginx内置变量

官网查看https://nginx.org/en/docs/http/ngx_http_core_module.html#var_status

参数变量说明示例
$remote_addr客户端地址41.124.22.10
$remote_user已经经过Auth Basic Module验证的用户名-
$time_local访问时间和时区13/Jun/2018:13:50:48 +0800
$time_iso8601访问时间和时区2018-06-13T13:50:26+08:00
$request请求的URI和HTTP协议“GET /laker.html HTTP/1.1”
$http_host请求地址,即浏览器中你输入的地址(IP或域名)www.laker.com/192.168.100.100
$statusHTTP请求状态200
$upstream_statusupstream状态200
$body_bytes_sent发送到客户端的字节数,不包括响应头1547
$bytes_sent发送到客户端的字节数
$http_refererurl跳转来源https://www.laker.com
$http_user_agent用户终端浏览器等信息“Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;
$ssl_protocolSSL协议版本TLSv1
$ssl_cipher交换数据中的算法RC4-SHA
$upstream_addr后台upstream的地址,即真正提供服务的主机地址192.168.100.101:8001
$request_time整个请求的总时间,以秒为单位,精确到毫秒0.205 205毫秒
$upstream_response_time请求过程中,upstream响应时间,以秒为单位,精确到毫秒0.002 2毫秒
$content_type请求头域
$limit_rate可启用响应速率限制
$query_string请求行中的参数等同$args
$http_cookie客户端cookie信息
$request_method客户端请求的动作通常为GET或POST
$request_uri包含请求参数的原始URI,不包含主机名/foo/bar.php?arg=baz
$uri不带请求参数的当前URI,$uri不包含主机名/foo/bar.html
$request完整的原始请求行
$request_body请求体
按天按月日志切割
server {
	...
    if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
        set $year $1;
        set $month $2;
        set $day $3;
    }
    // 按天切割日志
    access_log /var/log/nginx/time_$year-$month-$day.log laker;
    // 按月切割日志
    access_log /var/log/nginx/time_$year-$month.log laker;
    ...
}

注意层次关系,这段脚本一定要加到server配置内部,且if要在access_log前面,否则set的变量将无法引用

更多方式参见:https://blog.csdn.net/zzhongcy/article/details/86303204

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lakernote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值