1.nginx日志指令
- log_format: 用于设置日志格式
- access_log: 用于指定日志文件存放路径、格式、缓存大小
可设置在http、server块中
2.log_format
2.1 log_format语法
log_format name format [format ...]
name表示定义的格式名称
format 表示定义的格式样式。
- log_format 有一个默认的、无须设置的
combined
日志格式设置,相当于Apache的combined 日志格式,其具体参数如下:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http user_agent"';
2.2 access_log语法
access_log path [format [buffer=size | off]]
path 表示日志文件的存放路径
format 表示使用 log_format 指设置的日志格式的名称
buffer=size表示设置内存缓冲区的大小,例如可以设置 buffer=32k。
- 如果不想记录日志,可以使用以下指令关闭日志记录:
access_log off;
- 如果想使用默认的
combined
格式的日志记录,可以使用以下示例:
access_log /data1/logs/filename.1og;
access_log /data1/logs/filename.log combined;
- 如果想使用自定义格式的日志记录,可以使用以下示例,其中的 mylogformat 是日志格式名称:
log_format mylogformat '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent" $http_referer"'
'"$http_user_agent" $http_x_forwarded_for';
access_log /datal/logs/access.log mylogformat buffer=32k;
- Nginx 0.7.4之后的版本中,access_log 指令中的日志文件路径可以包含变量,例如:
access_log /data1/logs/$server_name.log combined;
假设 server_name 指令设置的虚拟主机名称为 test.domain.com,那么access_log 指令将把访问日志记录在
/datal/logs/test.domain.com.log
文件中
如果日志文件路径中含有变量,将存在以下一些限制:
-
Nginx 进程设置的用户和组必须有对该路径创建文件的权限。假设 Nginx 的 user 指令设置的用户名和用户组都是 www,而/datal/logs/目录的用户名和用户组为 root,日志文件/datal/logs/test.domain.com.log 将无法被 Nginx 创建;
-
缓冲将不会被使用;
-
对于每一条日志记录,日志文件都将先打开文件,再写入日志记录,然后马上关闭。为了提高包含变量的日志文件存放路径的性能,须要使用 open_log _file_cache 指令设置经常被使用的日志文件描述符缓存
open_log_file_cache 指令主要用来设置含有变量的日志路径的文件描述符缓存,它的语法如下:
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off
# 该指令默认是禁止的,等同于:
open_logfile_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 minuses=2 valid=1m;
3.nginx日志切割
便携 cron脚本
#!/bin/bash
#这个脚本须在每天的00:00运行
#Nginx日志文件的存放路径
logspath="/data1/logs/
mkdir -p $(logs_path)$(date -d "yesterday" + "%Y")/$(date -d "yesterday" + "%m")/
mv $(logs_path)access.log $(logs_path)$(date -d "yesterday" + "%Y")/$(date -d "yesterday" + "%m")/access_$(date -d "yesterday" + "%Y%m%d").log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`
另外,配置crontab每天凌晨00:00定时执行这个脚本
crontab -e
00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cutnginxlog.sh
标签:文件,12,log,format,access,nginx,日志,logs
From: https://www.cnblogs.com/ccblblog/p/17965816