http://www.williamsang.com/archives/1254.html

日志分割常用方法:

  • 自己写脚本分割
  • 使用linux自带的logrotate

前者灵活,可以应对各种需求,自定义文件夹、文件名。后者配置简单,使用方便。

下面我们以分割nginx日志为例介绍一下使用logrotate分割日志实例。

logrotate简单介绍

logrotate使用cron按时调度执行,日志的执行过程原理为不断改名称:比如你有个access.log文件,需要保留4个日志文件,那么logrotate是这么轮转的:

access.log满足轮转条件?(调度时间,日志大小是否满足要求)如果需要轮转则进行下列步骤,否则跳过

access.log.3存在?如果存在则删除

access.log.2如果存在则改名为access.log.3

access.log.1如果存在则改名为access.log.2

access.log如果存在则改名为access.log.1

创建一个空的access.log文件

如下图所示:

logrotate配置文件一般在:

/etc/logrotate.conf 通用配置文件,可以定义全局默认使用的选项。

/etc/logrotate.d/xxx 自定义服务配置文件

我们可以看下/etc/logrotate.conf里面的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 一个星期轮转一次
weekly
#保留四个日志
rotate 4
# 轮转旧的日志文件后创建新日志文件
create
# 使用日期作为轮转日志的后缀
dateext
# 压缩存储日志
#compress
 
# 包含某个目录下的自定义日志轮转
include
/etc/logrotate.d
 
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp
{
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp
{
missingok
monthly
create 0600 root utmp
rotate 1
}

我们新建一个/etc/logrotate.d/nginx来分割nginx日志,配置文件内容如下:

1
2
3
4
5
6
7
8
9
/data/logs/nginx/access/access.log
/data/logs/nginx/access/default.log {
daily
rotate 15
minsize 10M
sharedscripts
postrotate
  /usr/local/server/nginx/sbin/nginx
-s reload
endscript
}

第一行:指明日志文件位置,多个以空格分隔

第二行:调用频率,有:daily,weekly,monthly可选

第三行:总共轮换多少个日志文件,这里为保留15个

第四行:限制条件,大于10M的日志文件才进行分割,否则不操作

sharedscripts用于指明以下是执行轮转前和轮转后自定义执行的命令,比如postrotate和endscript表示,轮转后,执行nginx的重新加载配置文件,避免日志轮转后不写日志。如果要轮转前执行某个命令可以使用prerotate代替postrotate即可,两者可同时存在。

可以通过man logrotate查看更多选项

默认logrotate是通过crontab定期执行的,我们也可以手动执行查看结果:

  • # logrotate -vf /data/log/nginx/access.log

v选项表示查看详细执行过程

f表示强制执行日志轮转(不然时间不到,日志文件大小等条件不满足,不会执行)

强烈建议执行一下,了解下执行过程。

验证是否执行,查看cron的日志即可

  • # grep logrotate /var/log/cron

参考:

logrotate 进行nginx日志分割的更多相关文章

  1. 使用logrotate做nginx日志分割

    版权申明:转载请注明出处. 文章来源:http://bigdataer.net/?p=266 背景 nginx是一款非常优秀的网络代理工具,但是其日志管理有点缺憾:nginx的access_log会无 ...

  2. nginx 日志分割(简单、全面)

    Nginx 日志分割 因业务需要做了简单的Nginx 日志分割, 第1章 详细配置如下. #建议在mkdir  /home/shell  -p 专门写shell 脚本位置 root@localhost ...

  3. 使用logrotate管理nginx日志文件

    本文转载自:http://linux008.blog.51cto.com/2837805/555829 描述:linux日志文件如果不定期清理,会填满整个磁盘.这样会很危险,因此日志管理是系统管理员日 ...

  4. nginx日志分割配置实例

    Nginx没有类似Apache的cronolog日志分割处理的功能,但是,可以通过nginxNginx的信号控制功能利用脚本来实现日志的自动切割.请看下面的一个实例.Nginx对日志进行处理的脚本: ...

  5. nginx日志分割总结

    nginx日志自己不会进行分个,所有日志都会累积的记录在 access.log,error.log 中,当请求量大,一天就能到几百兆,如果不进行分给,对日志的查看和写入性能都有影响. 1. 编写脚本n ...

  6. 使用Linux自带的命令logrotate对Nginx日志进行切割

    说明: Nginx安装目录:/usr/local/nginx/Nginx日志目录:/var/log/nginx/error/*.log /var/log/nginx/access/w1/*.log / ...

  7. logrotate切割nginx日志

    1 配置 使用系统自带的logrorate来切个nginx日志,位于/usr/sbin/logrotate 假设服务器上有两个网站的nginx配置分别如下: 去除其它配置信息,只保留了日志相关 A网站 ...

  8. nginx日志分割小脚本

    nginx的日志一直是写在一个文件上面,运行久了之后文件会非常大,因此我们有必要对nginx的日志进行分割:   1 2 3 4 5 6 7 8 9 10 11 #! /bin/bash ACCESS ...

  9. nginx日志分割及备份

    环境:centos7 nginx1.16.1 一.分割及备份的目的 nginx默认将日志信息写在一个文件中,时间一久日志文件中条目越来越多,文件越来越大,不方便查看,备份的时候也不需要备份重复的信息, ...

随机推荐

  1. iOS开发小技巧总结

    一.NSLog的使用 NSLog在调试的时候,屡试不爽,可是在项目中用的太多,其实是会影响程序性能的,而且程序在非调试模式下也看不到打印,多浪费资源呢?如果程序中使用的太多,发布前删除又是一个麻烦事, ...

  2. C语言删除字符串中重复的字符

    #include <stdio.h> #include <string.h> #define NR(x) sizeof(x)/sizeof(x[0]) int Del_char ...

  3. LeetCode(67)-Rotate Array

    题目: Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the ar ...

  4. javascript操作select元素一例

    熟悉一下js对select元素的操作,html页面中建立一个form,其中包含一个select元素和submit按钮. 当选择select中某一项时改变其文字,当select中所有项的文字都改变后,重 ...

  5. 如何检测被锁住的Oracle存储过程

    今天遇到了这个情况,然后在网上找了到了这篇文章,借鉴过来做参考吧! 1.查看是哪一个存储过程被锁住 查V$DB_OBJECT_CACHE视图 select * from V$DB_OBJECT_CAC ...

  6. python 3下基于select模型的事件驱动机制程序

    它的基本原理就是select/epoll这个function会不断的轮询所负责的所有socket,当某个socket有数据到达了,就通知用户进程.它的流程如图: 当用户进程调用了select,那么整个 ...

  7. 关于eclipse运行TestNG出现: CreateProcess error=206, ÎļþÃû»ò)չÃû的解决办法

    最近玩物流宝的一个项目,需要测试下3个系统打通的接口. 不测不要紧,一测吓一跳.我的乖乖:几百个bean被加进来.就凭我这肉机,内存不爆才怪. 于是换一套方案,用了另一个测试接口. 但是这个测试接口, ...

  8. 关闭ipv6的方法

    公司研发反应,几台机器开了一些端口,但是访问一直不通. 检查后发现,发现服务开启的是ipv6的端口,所有首先想到的办法就是关闭ipv6. 关闭ipv6的方法有两种: 第一个是在内核配置文件修改配置(p ...

  9. C++string函数之strcat_s

    跟上一篇的strcpy_s一样,是新推出的较为安全的strcat函数 strcat_s脱胎于strcat,用于两个字符串的链接,strcat(str1,str2)直接返回新的str1. 但在vs200 ...

  10. 2013-9 OWASP论坛

    Broken We Application Project   ------这个PPT需要下载 OWASP BWA----- A Virtual machine---收集 Broken Web App ...