• Nginx日志


    Nginx日志对于统计、系统服务排错很有用。

    Nginx日志主要分为两种:access_log(访问日志)error_log(错误日志)

    通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。

    错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。

    因此,将日志好好利用,可以得到很多有价值的信息。

    查看日志命令:

    1. tail -f /usr/local/nginx/logs/access.log 

    6.1. 设置access_log

    访问日志主要记录客户端的请求。客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。当然具体要记录哪些信息,你可以通过log_format指令定义。

    语法

    1. access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 设置访问日志
    2. access_log off; # 关闭访问日志

    l path 指定日志的存放位置。

    l format 指定日志的格式。默认使用预定义的combined

    l buffer 用来指定日志写入时的缓存大小。默认是64k

    l gzip 日志写入前先进行压缩。压缩率可以指定,从19数值越大压缩比越高,同时压缩的速度也越慢。默认是1

    l flush 设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。

    l if 条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。

    另外,还有一个特殊的值off。如果指定了该值,当前作用域下的所有的请求日志都被关闭。

    示例

    1. http {
    2. include       mime.types;
    3. default_type  application/octet-stream;
    4. log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    5. '$status $body_bytes_sent "$http_referer" '
    6. '"$http_user_agent" "$http_x_forwarded_for"';
    7. ##日志格式使用默认的combined,指定日志的缓存大小为32k,日志写入前启用gzip进行压缩,压缩比使用默认值1,缓存数据有效时间为1分钟。
    8. access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m;  
    9. ...
    10. }

    作用域

    access_log指令的作用域分别有http,server,location。

    6.2. log_format自定义格式

    默认的日志格式

    1. log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    2. '$status $body_bytes_sent "$http_referer" '

                          '"$http_user_agent" "$http_x_forwarded_for"'; 

    各参数明细表:

    $remote_addr

    客户端的ip地址(代理服务器,显示代理服务ip)

    $remote_user

    用于记录远程客户端的用户名称(一般为“-”

    $time_local

    用于记录访问时间和时区

    $request

    用于记录请求的url以及请求方法

    $status

    响应状态码,例如:200成功、404页面找不到等。

    $body_bytes_sent

    给客户端发送的文件主体内容字节数

    $http_user_agent

    用户所使用的代理(一般为浏览器)

    $http_x_forwarded_for

    可以记录客户端IP,通过代理服务器来记录客户端的ip地址

    $http_referer

    可以记录用户是从哪个链接访问过来的

    6.3. 设置error_log

    错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息。

    错误日志不支持自定义。

    语法

    1. error_log path [level];

    l path参数指定日志的写入位置。

    l level参数指定日志的级别(不写为全部)。level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值(等级从低到高排列)。

    只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error

    示例

    error_log  logs/error.log; 

    error_log  logs/error_notice.log  notice;

    error_log  logs/error_info.log  info; ##可以将不同的错误类型分开存储

    6.4. 日志配置和及切割

    /etc/init.d/rsyslog start  #系统日志,如不开启,看不到定时任务日志

    /etc/rc.d/init.d/crond start #定时任务开启

    编写sh

    #!/bin/bash

    #设置日志文件存放目录

    LOG_HOME="/usr/local/nginx/logs/"

    #备分文件名称

    LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)"

    #重命名日志文件

    mv ${LOG_HOME}/access.log ${LOG_HOME}/access.${LOG_PATH_BAK}.log

    mv ${LOG_HOME}/error.log ${LOG_HOME}/error.${LOG_PATH_BAK}.log

    #向nginx主进程发信号重新打开日志

    kill -USR1 `cat ${LOG_HOME}/nginx.pid`

    配置cron:

    */1 * * * * /usr/local/nginx/sbin/logcut.sh

  • 相关阅读:
    图,深度,广度优先遍历(一)
    java实现快速排序
    图,深度,广度优先遍历(二)
    图,深度,广度优先遍历(三)
    Jpa动态多表if多条件联合查询(if中包含list不为null和“=”的判断),并对查询结果进行分页
    SpringBoo启动报错:Failed to load property source from location ‘classpath:/bootstrap.yml‘
    Java对象创建和Javabean创建
    Linux解压命令
    BDD测试利器:mocha+should.js
    《老码识途》读书笔记:第一章(中)
  • 原文地址:https://www.cnblogs.com/Soy-technology/p/11355605.html
Copyright © 2020-2023  润新知