1 日志配置
日志模块
官方文档Module ngx_http_log_module
日志模块的名称
ngx_http_log_module
相关指令
log_format 日志格式
access_log 访问日志
error_log 错误日志
open_log_file_cache 日志缓存
open_log_file_cache max=N [inactive=time] [mim_uses=N] [valid=time] | off
该指令默认是禁止的,等同于:
open_log_file_cache off;
open_log_file_cache 指令的各项参数说明如下:
max: 设置缓存中的最大文件描述符数量。如果超过设置的最大文件描述符数量,则采用 LRU (Least Recently Used) 算法清除"较不常使用的文件描述符"。 LRU (Least Recently Used) 算 法的基本概念是:当内存缓冲区剩余的可用空间不够时,缓冲区尽可能地先保留使用者最常使用 的数据,将最近未使用的数据移出内存,腾出空间来加载另外的数据。
inactive: 设置一个时间,如果在设置的时间内没有使用此文件描述符,则自动删除此描述符。 此参数为可选参数,默认的时间为 10 秒钟。
min_uses: 在参数 inactive 指定的时间范围内,如果日志文件超过被使用的次数,则将该日 志文件的描述符记入缓存。默认次数为 1。
valid: 设置多长时间检查一次,看一看变量指定的日志文件路径与文件名是否仍然存在。默 认时间为 60秒。
off: 禁止使用缓存。
open_log_file_cache 指令的设置示例如下:
open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;
日志的格式和命令
log_format
Nginx有非常灵活的日志记录模式。每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令定义。
语法
Syntax: log_format name [escape=default|json] string ...;
name 表示格式名称
string 表示定义的格式
默认值
Default: log_format combined "...";
log_format 有默认的无需设置的combined日志格式,相当于apache的combined日志格式
定义设置位置
vim /etc/nginx/nginx.conf
日志格式允许包含的变量
$remote_addr, 远程地址: 记录客户端IP地址
$remote_user 远程用户:记录客户端用户名称
[$time_local] 本地时间:服务器自身时间
$request 请求:记录请求的URL和HTTP协议
"GET /1.html HTTP/1.1"
"GET /index.html HTTP/1.1"
$status 状态:记录请求状态
200
404
503
100
301
$body_bytes_sent 发送给客户端的字节数,不包括响应头的大小
$http_referer 记录从哪个页面链接访问过来的 (超链接)
$http_user_agent 记录客户端浏览器相关信息
$http_x_forwarded_for 代理IP
访问日志和错误日志
某条日志记录
某条日志记录含义
日志缓存
大量访问到来时,对于每一条日志记录,都将是先打开文件,再写入日志,然后关闭.占用了系统的IO,与业务无关。
可以使用open_log_file_cache来设
Syntax:
open_log_file_cache max=1000 inactive=20s min_uses=3 valid=1m ;
Default:
open_log_file_cache off;
Context:
http, server, locatition
2 日志轮转/切割
Nginx安装,会默认启动日志轮转。
rpm -ql nginx| grep log
/etc/logrotate.d/nginx
轮转语句
指令 /usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf