0717-7821348
政策法规

政策法规

您现在的位置: 首页 > 政策法规
彩乐乐双色球杀号-后端实践:Nginx日志装备(超具体)
2019-12-19 02:15:20
作者:antwang
来历:https://juejin.im/post/5aa09bb3f265da238f1彩乐乐双色球杀号-后端实践:Nginx日志装备(超具体)21b6c

前语

Nginx日志关于核算、体系服务排错很有用。

Nginx日志首10万左右的车排行榜要分为两种:access_log(拜访日志)和error_log(过错日志)。经过拜访日志咱们能够得到彩乐乐双色球杀号-后端实践:Nginx日志装备(超具体)用户的IP地址、浏览器的信息,恳求的处理时刻等信息。过错日志记载了拜访犯错的信息,能够协助咱们定位过错的原因。

本文将具体描述一下怎么装备Nginx日志。

设置access_log

拜访日志首要记载客户端的恳求。客户端向Nginx服务器建议的每一次恳求都记载在这里。客户端IP,浏览器信息,referer,恳求处理时刻,恳求URL等都能够在拜访日志中得到。当然具体要记载哪些信息,你能够经过log_format指令界说。

语法

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 设置拜访日志
access_log off; # 封闭拜访日志
  • path 指定日志的寄存方位。
  • format 指定日志的格局。默许运用预界说的combined。
  • buffer 用来指定日志写入时的缓存巨细。默许是64k。
  • gzip 日志写入前先进行紧缩。紧缩率能够指定,从1到9数值越大紧缩比越高,一起紧缩的速度也越慢。默许是1。
  • flush 设置缓存的有用时刻。假设超越flush指定的时刻,缓存中的内容将被清空。
  • if 条件判别。假设指定的条件核算为0或空字符串,那么该恳求不会写入日志。

别的,还有一个特别的值off。假设指定了该值,当时效果域下的一切的恳求日志都被封闭。

效果域

能够运用access_log指令的效果域别离有http,server,location,limit_except。也就是说,在这几个效果域外运用该指令,Ng彩乐乐双色球杀号-后端实践:Nginx日志装备(超具体)inx会报错。

以上是access_log指令的根本语法和参数的意义。下面咱们看一几个比如加深一下了解。

根本用法

access_log /var/logs/nginx-access.log

该比如指定日志的写入途径为/var/logs/nginx-access.log,日志格局运用默许的combined。

access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m

该比如指定日志的写入途径为/var/logs/nginx-access.log,日志格局运用默许的combined,指定日志的缓存巨细为32k,日志写入前启用gzip进行紧缩,紧缩比运用默许值1,缓存数据有用时刻为1分钟。

运用log_format自界说日志格局

Nginx预界说了名为combined日志格局,假设没有清晰指定日志格局默许运用该格局:

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

假设不想运用Nginx预界说的格局,能够经过log_format指令来自界说。

语法

log_format name [escape=default|json] string ...;
  • name 格局称号。在access_log指令中引证。
  • escape 设置变量中的字符编码方法是json仍是default,默许是default。
  • string 要界说的日志格局内容。该参数能够有多个。参数中能够运用Nginx变量。

下面是log_format指令中常用的一些变量:



看不清能够点开扩大

下面演示一下自界说日志格局的运用:

access_log /var/logs/nginx-access.log main
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

咱们运用log_format指令界说了一个main的格局,并在access_log指令中引证了它。假设客户端有建议恳求:https://suyunfe.com/,咱们看一下我截取的一个恳求的日志记载:

112.195.209.90 - - [20/Feb/2018:12:12:14 +0800] 
"GET / HTTP/1.1" 200 190 "-" "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36" "-"

咱们看到终究的日志记载中$remote_user、$http_referer、$http_x_forwarded_for都对应了一个-,这是由于这几个变量为空。

设置error_log

过错日志在Nginx中是经过error_log指令完成的。该指令记载服务器和恳求处理过程中的过错信息。

语法

装备过错日志文件的途径和日志等级。

error_log file [level];
Default:
error_log logs/error.log error;

第一个参数指定日志的写入方位。

第二个参数指定日志的等级。level能够是debug, info, notice, warn, error, crit, alert,emerg中的恣意值。能够看到其取值规模是按紧迫程度从低到高摆放的。只要日志的过错等级等于或高于level指定的值才会写入过错日志中。默许值是error。

根本用法

error_log /var/logs/nginx/nginx-error.log

它能够装备在:main, http, mail, stream, server, location效果域。

比如中指定了过错日志的途径为:/var/logs/nginx/nginx-error.log,日志等级运用默许的error。

open_log_file_cache

每一条日志记载的写入都是先翻开文件再写入记载,然后封闭日志文件。假设你的日志文件途径中运用了变量,如access_log /var/logs/$host/nginx-access.log,为进步功能,能够运用open_log_file_cache指令设置日志文件描述符的缓存。

语法

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
  • max 设置缓存中最多包容的文件描述符数量,假设被占满,选用LRU算法将描述符封闭。
  • inactive 设置缓存存活时刻,默许是10s。
  • min_uses 在inactive时刻段内,日志文件最少运用几回,该日志文件描述符记入缓存,默许是1次。
  • valid:设置多久对日志文件名进行查看,看是否发生变化,默许是60s。
  • off:不运用缓存。默许为off。

根本用法

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

它能够装备在http、server、location效果域中。

比如中,设置缓存最多缓存1000个日志文件描述符,20s内假设缓存中的日志文件描述符至少被被拜访2次,才不会被缓存封闭。每隔1分钟查看缓存中的文件描述符的文件名是否还存在。

总结

Nginx中经过access_log和error_log指令装备拜访日志和过错日志,经过log_format咱们能够自界说日志格局。假设日志文件途径中运用了变量,咱们能够经过open_log_file_cache指令来设置缓存,提高功能。

别的,在access_log和log_format中运用了许多变量,这些变量没有一一列举出来,具体的变量信息能够参阅Nginx官方文档:

http://nginx.org/en/docs/varindex.html