nginx日志模块及日志格式

配置实例
指令
     access_log
     log_format
     open_log_file_cache

ngx_http_log_module模块按指定的格式写访问日志。

请求在处理结束时,会按请求路径的配置上下文记访问日志。 如果在请求处理期间产生了内部跳转, 请求结束时的路径可能不同于原始的请求路径。

配置实例

 

log_format gzip '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $bytes_sent '
                '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /spool/logs/nginx-access.log gzip buffer=32k;

 

指令
语法:access_log path [format [buffer=size]];
access_log off;
默认值:
access_log logs/access.log combined;
上下文:httpserverlocationif in locationlimit_except

为访问日志设置路径,格式和缓冲区大小(nginx访问日志支持缓存)。 在同一个配置层级里可以指定多个日志。 特定值off会取消当前配置层级里的所有access_log指令。 如果没有指定日志格式则会使用预定义的“combined”格式。

缓冲区的大小不能超过磁盘文件原子性写入的大小。 对于FreeBSD来说缓冲区大小是无限制的。

日志文件的路径可以包含变量(0.7.6+), 但此类日志存在一些限制:

  • 工作进程使用的user 应拥有在目录里创建文件的权限;
  • 写缓冲无效;
  • 每条日志写入都会打开和关闭文件。然而,频繁使用的文件描述符可以存储在缓存中, 在open_log_file_cache指令的valid参数指定的时间里, 写操作能持续写到旧文件。
  • 每次日志写入的操作都会检查请求的 根目录是否存在, 如果不存在则日志不会被创建。 因此在一个层级里同时指定root 和access_log是一个不错的想法:
    server {
        root       /spool/vhost/data/$host;
        access_log /spool/vhost/logs/$host;
        ...

 

语法:log_format name string ...;
默认值:
log_format combined "...";
上下文:http

指定日志的格式。

日志格式允许包含普通变量和只在日志写入时存在的变量:

$body_bytes_sent

发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。

$bytes_sent

发送给客户端的总字节数。

$connection

连接的序列号。

$connection_requests

当前通过一个连接获得的请求数量。

$msec

日志写入时间。单位为秒,精度是毫秒。

$pipe

如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。

$request_length

请求的长度(包括请求行,请求头和请求正文)。

$request_time

请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。

$status

响应状态。

$time_iso8601

ISO8601标准格式下的本地时间。

$time_local

通用日志格式下的本地时间。

 

发送给客户端的响应头拥有“sent_http_”前缀。 比如$sent_http_content_range

配置始终包含预先定义的“combined”日志格式:

log_format combined '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

 

语法:open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
默认值:
open_log_file_cache off;
上下文:httpserverlocation

定义一个缓存,用来存储频繁使用的文件名中包含变量的日志文件描述符。 该指令包含以下参数:

max

设置缓存中描述符的最大数量;如果缓存被占满,最近最少使用(LRU)的描述符将被关闭。

inactive

设置缓存文件描述符在多长时间内没有被访问就关闭; 默认为10秒。

min_uses

设置在inactive参数指定的时间里, 最少访问多少次才能使文件描述符保留在缓存中;默认为1。

valid

设置一段用于检查超时后文件是否仍以同样名字存在的时间; 默认为60秒。

off

禁用缓存。

 

使用实例:

open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;

 

转载于:https://my.oschina.net/u/259976/blog/832536

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值