用log_format指令设置了日志格式之后,需要用access_log指令指定日志文件存放路径,access_log指令的语法如下:
access_log path [format [buffer=size|off]]
其中path表示日志文件设置内存缓存区的大小,例如可以设置buffer=32k.
(1)如果不想记录日志,可以使用一下指令关闭日志记录;access_log off;
(2)如果想使用默认的combined格式的日志记录,可以使用以下示例:access_log/data1/logs/filename.log;或者accsee_log/data1/logs/filename.log combined;
(3)如果想使用自定义格式的日志记录,可以使用以下示例,其中的mylogformat是日志格式名称:
log_format mylogformat '$remote_addr-$remote_user [$time_local]'
'$status $bo_bytes_sent"$http_referer" '
' "$http_user_agent" $http_x_forwarded_for'
access_log/data1/logs/access.log mylogformat buffer=32k;
(4)在Nginx 0.7.4之后的版本中,access_log指令中的日志文件路径可以包含变量,例如:access_log/data1/logs/$server_name.log combined;
假设server_name指令设置的虚拟主机名称为test.domain.com,那么access_log指令将把访问日志记录在/data1/logs/test.domain.com.log文件中。
如果日志文件路径含有变量,将存在以下一些限制:
(1)Nginx进程设置的用户和组必须有对该路径创建文件的权限。假设Nginx的user指令设置的用户名和用户组都是www,而、data1/logs/目录的用户名和用户组为root,日志文件/ata1/logs/test.domain.com.log将无法被Nginx创建;
(2)缓存将不会被使用
(3)对于每一条日志记录,日志文件都将先打开文件,再写入日志记录,然后马上关闭。为了提高包含变量的日志文件存放路径的性能,须要使用open_log_file_cache指令设置经常被使用的日志文件描述符缓存。
open_log_file_cache指令主要用来设置含有变量的日志路径的文件描述符缓存,它的语法如下:
open_log_file_cache max=N[inactive=time][min_uses=N][VALID=time]| off
该指令默认是禁止的,等同于:open_log_file_cache off;
open_log_file_cache指令的各项参数说明如下:
max:设置缓存中的文件描述符数量。如果超过设置的文件描述符数量,则采用LRU算法清除“较不常使用的文件描述符”。LRU算法的基本概念是:当内存缓冲区剩余的可用空间不够时,缓冲区尽可能地先保留使用者最常使用的数据,将最近未使用的数据移出内存,腾出空间来加载另外的数据。
inactive:设置一个时间,如果在设置的时间内没有使用此文件描述符,则自动删除此描述符。此参数为可选参数,默认的时间为10秒钟。
min_users:在参数inactive指定的时间范围内,如果日志文件超过被使用的次数,则将该日志文件的描述符记入缓存。莫儿女次数为1.
valid:设置多长时间检查一次,看一看变量指定的文件路径与文件名是否仍然存在。默认时间为60秒。
off:禁止使用缓存。
open_log_file_cache指令的设置示例如下:
open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;