Nginx 日志按天生成
Nginx About 1,912 words说明
无需借助logrotate
等日志处理工具。
配置
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
map $time_iso8601 $logdate {
'~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
default 'date-not-found';
}
access_log /var/log/nginx/access-$logdate.log main;
open_log_file_cache max=10;
}
或者:
if
不能用在http
作用域中。
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /var/log/nginx/access-$year-$month-$day.log main;
open_log_file_cache max=10;
}
open_log_file_cache
每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果日志文件路径中使用了变量为提高性能,可以使用open_log_file_cache
指令设置日志文件描述符的缓存。
语法
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
max
:设置缓存中描述符的最大数量;如果缓存被占满,最近最少使用(LRU
)的描述符将被关闭。inactive
:设置缓存文件描述符在多长时间内没有被访问就关闭; 默认为10
秒。min_uses
:设置在inactive
参数指定的时间里, 最少访问多少次才能使文件描述符保留在缓存中;默认为1
。valid
:设置一段用于检查超时后文件是否仍以同样名字存在的时间; 默认为60
秒。off
:禁用缓存。- 默认值:
open_log_file_cache off
。 - 作用域:
http
,server
,location
。
注意
若error.log
出现错误日志:testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request
2019/07/26 15:24:37 [error] 43157#43157: *52454578 testing "/etc/nginx/html" existence failed (2: No such file or directory) while logging request, client: xxx.xx.xxx.xxx, server: , request: "POST /a/b/c HTTP/1.1", upstream: "http://xxxxx", host: "xxx.com"
解决办法
- 方法一:作用域下添加
root /var/www
(或其他已经存在的路径) - 方法二(推荐):创建
/etc/nginx/html
文件夹(Nginx
安装目录下html
文件夹,可能不一定安装在/etc/nginx
下)
重新加载
nginx -s reload
Views: 10,492 · Posted: 2019-07-22
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...