OpenResty完全开发指南:构建百万级别并发的Web应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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。