Nginx自定义日志文件内容及文件名日期格式
Log文件名输出自定义日期格式
1. 创建自定义配置文件 log_format.conf
创建目录地址:/etc/nginx/userconf/
不要放到nginx的conf.d目录中,nginx.conf配置会引入conf.d目录中所有的配置文件会导致出现变量无效等问题
2. log_format.conf文件
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /var/log/nginx/${server_name}_${server_port}/${server_name}_${server_port}_${year}-${month}-${day}_access.log main;
- 在nginx.conf 文件中引入 log_format.conf文件
upstream yapi_host {
server 192.168.1.222:3000;
}
server {
listen 80;
set $vhost $server_name;
server_name 域名;
include /etc/nginx/userconf/log_format.conf;
location / {
proxy_pass http://yapi_host;
index index.jsp index.htm;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-Port $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 8001;
set $vhost $server_name;
server_name 域名;
include /etc/nginx/userconf/log_format.conf;
location / {
root /etc/nginx/files;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
自定义Log输出内容
1. nginx.conf文件中修log_format参数
log_format main '$year-$month-$day-$hour:$minutes:$seconds $request_method $request_time $status $request_uri $http_host $upstream_addr $http_referer $http_user_agent $my_cookie';
可以直接使用$http_cookie 来记录所有的cookie信息,但是会导致文件过大且记录一些无用cookie
下边案例使用自定义变量来获取单个cookie信息。
其中$my_cookie为自定义变量,使用main 的server中必须要定义此变量,不然会报错。
获取单个cookie的值可以使用$cookie_{key}方式,比如cookie名字叫longan 则是 $cookie_longan
2. 把log_format.conf文件修改成如下
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
set $hour $4;
set $minutes $5;
set $seconds $6;
}
set $my_cookie "-"; // 定义默认值 多个server共用此配置文件,使用if判断在不同的server中获取自定义的cookie
if ($server_name = "域名a" && $server_port = '80'){ // 如果是此域名下的情况下 记录名字为longan的cookie值 赋值给$my_cookie
set $my_cookie longan=$cookie_longan;
}
if ($server_name = "域名b" && $server_port = '8001'){
set $my_cookie haha=$cookie_longan;
}
…………
access_log /var/log/nginx/${server_name}_${server_port}/${server_name}_${server_port}_${year}-${month}-${day}_access.log main;

浙公网安备 33010602011771号