2.8 运行日志
日志是Web服务器非常重要的数字资产,它记录了服务器运行期间的各种信息,可用于数据分析或者排查故障。
Nginx的运行日志分为两种:记录HTTP/TCP访问请求的access_log和记录服务器各种错误信息的error_log。
2.8.1 访问日志
访问日志保存了所有连接到服务器的客户端访问记录,在访问日志里可以记录每次请求的IP地址、URI、连接时间、收发字节数等许多信息。大多数网站会定期收集访问日志,然后使用大数据平台进行加工处理,进而调整优化服务。
在Nginx里需要用两个指令来设定访问日志:
log_format name format_string;
access_log path [format [buffer=size] [flush=time]];
log_format指令定义日志的格式,格式字符串里可以使用变量(见2.4节)来任意记录所需的信息,之后就可以用access_log指令决定日志的存储位置和格式。为了优化磁盘读写,可以设置buffer和flush选项,指定写磁盘的缓冲区大小和刷新时间。
例如,下面的配置使用了8KB的缓存,每1秒刷新一次,使用格式main:
log_format main '$remote_addr ... '; access_log /var/logs/openresty/access.log main buffer=8k flush=1s;
2.8.2 错误日志
当Nginx运行发生异常时(例如拒绝访问、缓冲区不足、后端不可用等)就会记录错误日志。错误日志的格式不能自定义,存放位置由error_log指令确定:
error_log file level;
默认的日志存放位置是安装目录下的logs/error.log。我们也可以用参数file改为其他路径。第二个参数level是日志的允许输出级别,取值是“debug|info|notice|warn|error|crit|alert|emerg”,只有高于这个级别的日志才会记录下来,默认值是error。
对于我们开发OpenResty应用来说error_log非常重要,优化系统、排查问题的时候首先要做的事情就是查看error_log。