nginx日志模块及日志定时切割的方法

一:作用

Ngx_http_log_module:定义日志格式,并且以指定的格式保存。

二:示例配置

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

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

三:access_log

句法: access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

access_log off;

默认: access_log logs / access.log合并;

语境: http,server,location,if in location,limit_except

1:[buffer=size]

设置缓冲日志写入的路径,格式和配置。

2:gzip[=level]

如果使用该 gzip 参数,则在写入文件之前,缓冲的数据将被压缩。 压缩级别可以设置在1(最快,较少压缩)和9(最慢,最佳压缩)之间。 默认情况下,缓冲区大小等于64K字节,压缩级别设置为1.由于数据是以原子块压缩的,因此日志文件可以随时解压或由“  zcat ”  读取 。

3:[flush=time]

保存在缓存区中的最长时间。

四:log_format

指定日志格式

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

1:remote_addr, $http_x_forwarded_for 记录客户端IP地址

2:remote_user 记录客户端用户名称

3:request 记录请求的URL和HTTP协议

4:status 记录请求状态

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

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

7:connection 连接的序列号。

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

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

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

11:http_referer 记录从哪个页面链接访问过来的

12:http_user_agent 记录客户端浏览器相关信息

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

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

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

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

五:open_log_file_cache

句法: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];

open_log_file_cache off;

默认:

open_log_file_cache off;

语境: http,server,location

作用:定义一个缓存,用于存储名称中包含变量的常用日志的文件描述符。该指令具有以下参数:

  1. max: 设置缓存中描述符的最大数量; 如果缓存变满,则最近最少使用(LRU)描述符关闭
  2. inactive: 设置在此时间之后如果没有访问时缓存的描述符被关闭的时间; 默认情况下为10秒
  3. min_uses: 在 inactive 参数定义的时间内设置文件使用的最小数量,以使描述符在缓存中保持打开状态; 默认情况下,1
  4. valid: 设置应检查文件是否仍然存在同名的时间; 默认情况下为60秒
  5. off: 禁用缓存

用法示例:

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

六:日志切割

1. 定义日志轮滚策略

# vim nginx-log-rotate

/data/weblogs/*.log {
  nocompress
  daily
  copytruncate
  create
  notifempty
  rotate 7
  olddir /data/weblogs/old_log
  missingok
  dateext
  postrotate
    /bin/kill -HUP `cat /var/run/nginx.pid 2> /dev/null` 2> /dev/null || true
  endscript
}

[warning]/data/weblogs/*.log使用通配符时,/data/weblogs/目录下的所有匹配到的日志文件都将切割。如果要切割特定日志文件,就指定到该文件。[/warning]

2. 设置计划任务

59 23 * * * root ( /usr/sbin/logrotate -f /PATH/TO/nginx-log-rotate)

这样每天23点59分钟执行日志切割。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Nginx日志配置及日志切割

    日志配置 日志对于统计排错来说非常有利的.本文总结了nginx日志相关的配置如access_log.log_format.open_log_file_cache.log_not_found.log_subrequest.rewrite_log.error_log. nginx有一个非常灵活的日志记录模式.每个级别的配置可以有各自独立的访问日志.日志格式通过log_format命令来定义. ngx_http_log_module是用来定义请求日志格式的. 1. access_log指令 语法: a

  • Crontab+Shell做Nginx日志切割脚本实例代码

    平日里,我们需要把 Nginx 的错误日志输出到文件里,但是时间一长,文件就特别大,之前我服务器上日志就一周没管它,今天一看日志文件都32个G了,大的吓人.于是就写了个日志切割的脚本. 原理 其实日志切割脚本的原理很简单 先将原来的日志文件移动到指定文件夹中 向 Nginx 发送 USR1 信号,让 Nginx 重新加载配置文件 [如果不发送信号的话,nginx 还是会将日志写到你移动的文件里去 #!/bin/bash LOGS_PATH=/home/wwwlogs DATE=$(date +%

  • nginx日志切割shell脚本

    一.脚本思路 第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志.在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件. 第二步向nginx主进程发送USR1信号. nginx主进程接到信号后会从配置文件中读取日志文件名称,重新打开日志文件(以配置文件中的日志名称命名),并以工作进程的用户作为日志文件的所有者. 重新打开日志文件后,nginx主进程会关闭重名的日志文件并通知工作进程使用新打开的日志文件.

  • Nginx日志按日期切割详解(按天切割)

    实现需求 本文实现的功能是在吗每天凌晨00:00把前一天的Nginx日志access.log重命名为access-xxxx-xx-xx.log格式,例如:access-2016-10-01.log,下面话不多说了,来看看详细的实现方法吧. 实现方法 脚本 vim /opt/nginx/cut_nginx_log.sh #!/bin/bash #此脚本用于自动分割Nginx的日志,包括access.log和error.log #每天00:00执行此脚本 将前一天的access.log重命名为acc

  • Linux下nginx生成日志自动切割的实现方法

    Linux下nginx生成日志自动切割的实现方法 1.编辑切割日志的 shell 程序,目录自定 #vi /data/nginx/cut_nginx_log.sh 输入代码: #!/bin/bash # This script run at 00:00 function cutAccess() { dir=$1 newdir="${dir}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday&quo

  • Nginx定时切割日志实现详解

    前言 Nginx日志默认情况下写入到一个文件中,为了区分各个域下的日志,我们一般会分开存储.即时这样,文件也会变的越来越大,非常不方便查看分析.通常我们是以每日来做统计的,下面来聊聊以日期来分隔Nginx日志. 配置 编写脚本 #!/bin/bash #初始化 LOGS_PATH=/usr/local/nginx/logs YESTERDAY=$(date -d "yesterday" +%Y%m%d) #按天切割日志 mv ${LOGS_PATH}/bbs.52itstyle.com

  • 解析Nginx中的日志模块及日志基本的初始化和过滤配置

    无论在任何项目中,日志都是一个非常重要的模块,无论是问题定位还是日常信息的管理,都离不开他 在nginx中,ngx_errlog_module模块专门用于处理nginx日志信息,是nginx的core模块之一 在 main 函数中,时间初始化结束后马上进行的就是日志模块的初始化 日志结构: 日志模块的初始化主要做的事情就是初始化全局变量 ngx_log,并创建 errlog 文件 ngx_log_s 结构 ngx_log 变量是一个 ngx_log_s 结构体,定义在 core/ngx_log.

  • nginx日志模块及日志定时切割的方法

    一:作用 Ngx_http_log_module:定义日志格式,并且以指定的格式保存. 二:示例配置 log_format compression '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; access_log

  • Python学习之日志模块详解

    目录 日志的作用 日志的等级 logging 模块的使用 logging 模块演示小案例 OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块之一,接下来们就看一看今天具体要学习日志模块中的那些内容吧. 日志的作用 说到日志,我们完全可以想象为现实生活中的日记.日记是我们平时记录我们生活中点点滴滴的一种方法,而日志我们可以认为是 程序的日记 ,程序的日记是用来记录程序的行为,一般来说我们可以通过日志记录一些程序的重要信息. 比如哪里报错了?报错原

  • Linux系统下nginx日志每天定时切割的脚本写法

    使用Linux系统自带的命令logrotate对Nginx日志进行切割. Nginx安装目录:/usr/local/nginx/ Nginx日志目录:/usr/local/nginx/logs/./usr/local/nginx/logs/nginx_logs/ 1.添加nginx日志切割脚本 cd /etc/logrotate.d #进入目录 vi /etc/logrotate.d/nginx #编辑脚本 /usr/local/nginx/logs/*.log /usr/local/nginx

  • Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录

    System.out和System.err都被打印到catalina.out.catalina.out不会rotate.一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响. 1.可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息. [root@localhost conf]# pwd /usr/local/tomcat/conf [root@localhost conf]# cp logging.pr

  • Linux下定时切割Tomcat日志并删除指定天数前的日志记录

    System.out和System.err都被打印到catalina.out.catalina.out不会rotate.一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响. 1.可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息. [root@localhost conf]# pwd /usr/local/tomcat/conf [root@localhost conf]# cp logging.pr

  • Nginx纯配置实现日志实时上报的思路与方法

    目录 前言 实现思路 实现步骤 1. 编译 Nginx 2. 配置文件如下 总结 前言 Nginx 作为常用的负载均衡网关. 会产生大量的日志. 但是由于 Nginx 的配置文件是一种声明式的编程范式, 不方便描述流程控制, 因此不能通过简单的指令实现日志的上报. 通常 Nginx 的日志上报是需要写一个shell脚本或其他语言的脚本来定时解析 Nginx 的 log 文件, 然后进行上报. 利用 NJS 模块, 可以实现实时的日志上报. 但是由于 NJS 模块支持的指令的限制, 无法通过单一指

  • Nginx利用Logrotate实现日志分割的详细过程

    目录 前言 Logrotate用法 1.安装 2.基本用法详解 2.1 入门 2.2 分割文件压缩 2.3 按照时间分割 2.4 按照文件大小分割 2.5 自定义每小时分割 2.6 自定义分割执行时间 nginx日志分割步骤 总结 前言 nginx默认没有提供对日志文件的分割功能,所以随着时间的增长,access.log和error.log文件会越来越大,尤其是access.log,其日志记录量比较大,更容易增长文件大小,影响日志写入性能 分割nginx日志的方法有很多,这里推荐利用Logrot

  • python logging模块书写日志以及日志分割详解

    本文范例是书写两个日志:错误日志(ERROR级别)和运行日志(DEBUG级别),其中运行日志每日凌晨进行分割 import logging,datetime,logging.handlers from conf import settings if __name__ == "__main__": #两个日志,错误日志和运行日志,输出文件路径及文件名 error_log = settings.ERROR_LOG_FILE run_log = settings.RUN_LOG_FILE l

  • python logging日志模块以及多进程日志详解

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python的logging模块提供了灵活的标准模块,使得任何Python程序都可以使用这个第三方模块来实现日志记录.python logging 官方文档 logging框架中主要由四个部分组成: Loggers: 可供程序直接调用的接口 Handlers: 决定将日志记录分配至正确的目的地 Filters:

随机推荐