logrotate 是 linux 系统用来分割日志的系统工具,可以方便将日志按周期(日,周,月)和大小进行分割。

当我们的服务器访问量比较大时,服务器的 access.log 可能会 G/天的级别增长,而我们希望日志可以按天周月或当日志文件大小达到某个限额时进行分割。

列举下如何使用它对 apache 或 nginx 日志进行切分:

apache 其实自身已经集成了一个叫rotatelogs的工具,就在 apache 安装目录的 bin 下面,可以很方便的进行日志切割规则设置,在你的配置文件或者虚拟主机配置中如下设置

#年月日时分秒 1G大小分割

ErrorLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/error_log_%Y%m%d%H%M%S 1024M"

#年月日 1G大小

CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log_%Y%m%d 1024M" common

#年月日 每86400秒 即1天分割一次 480 为时区的偏移量 北京东八区 60 * 8 = 480 s

CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/httpd/access_log_%Y%m%d 86400 480" common

logrotate工具

/etc/logrotate.conf 主配置文件

# see "man logrotate" for details

# rotate log files weekly 以周作为周期

weekly

# keep 4 weeks worth of backlogs 保留4个分割文件

rotate 4

# create new (empty) log files after rotating old ones 创建新的日志文件

create

# use date as a suffix of the rotated file 以日期为后缀

dateext

# uncomment this if you want your log files compressed 默认不压缩

#compress

# RPM packages drop log rotation information into this directory 自定义日志分割配置 nginx 的放这就好

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

}

# system-specific logs may be also be configured here.

默认配置如上

/etc/logrotate.d/* 独立配置文件

我们可以将自定义的日志分割配置放在此处,会被加载进入主配置文件中,比如我们新建一个

/etc/logrotate.d/nginx 配置文件:

nginx的默认日志目录是 /home/wwwlogs/,默认pid目录是/usr/local/nginx/logs/nginx.pid 这些需要根据自己的配置做相应调整。

/home/wwwlogs/*.log {

daily #以天为周期分割日志

minsize 1024M #最小 比如每日分割 但如果大小未到 1024M 则不分割

maxsize 2048M #最大 当日志文件超出 2048M 时,即便再下一个时间周期之前 日志也会被分割

rotate 7 #保留七天

missingok #忽略错误

notifempty #如果文件为空则不分割 not if empty

dateext #以日期为单位

size 1024M #以大小为限制做日志分割 size 会覆盖分割周期配置 1024 1024k 1024M 1024G

sharedscripts #开始执行附加的脚本命令 nginx写日志是按照文件索引进行的 必须重启服务才能写入新日志文件

postrotate

if [ -f /usr/local/nginx/logs/nginx.pid ]; then

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` #重启nginx服务

fi

endscript

}

我自己用的,一个日志文件按1G大小分割

/home/wwwlogs/*.log {

rotate 7

missingok

notifempty

dateext

size 1024M

sharedscripts

postrotate

if [ -f /usr/local/nginx/logs/nginx.pid ]; then

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` #重启nginx服务

fi

endscript

}

/etc/cron.daily/logrotate 每日任务

cron.daily 是 crond 的一个每日任务,每天凌晨零点执行一次

配置检测

/usr/sbin/logrotate -dv 来开启debugger详情模式来查看配置是否正确

例如检测全局

/usr/sbin/logrotate -dv /etc/logrotate.conf

检测nginx配置

/usr/sbin/logrotate -dv /etc/logrotate.d/nginx

强制执行

/usr/sbin/logrotate -fv /etc/logrotate.d/nginx

常见问题

1、because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.

日志文件权限问题,在相应的配置中设置如下配置就好 root 组的 root 用户,自己做相应的权限声明即可

#su user group

su root root

OK,具体的用法可以 man logrotate 一下!

logrotate测试_使用 logrotate 对 apache/nginx 日志切割相关推荐

  1. logrotate测试_使用Logrotate分割Nginx日志

    Logrotate简介 logrotate 是Linux系统日志文件管理工具.用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做"转储".可以根据日志文件的大小,也可以根据其 ...

  2. 6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)

    课程名称:12.10 Nginx访问日志 笔记内容: [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf 定义日志格式 combined_ ...

  3. 12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期时间

    - 12.10 Nginx访问日志 - 12.11 Nginx日志切割 - 12.12 静态文件不记录日志和过期时间# 12.10 Nginx访问日志 - 日志的格式- vim /usr/local/ ...

  4. nginx日志切割并使用flume-ng收集日志

    nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件. 第一步就是重命名日志文件,不用担心重命名后nginx找不到 ...

  5. nginx日志切割脚本

    nginx的日志文件没有rotate功能.如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件. 第一步就是重命名日志文件,不用担心重命名后nginx找不到 ...

  6. logrotate测试_日志切割之Logrotate

    1.关于日志切割 日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处 ...

  7. logrotate测试_日志轮询工具Logrotate的使用

    Lograte的作用 我们可以在 Linux中配置 logrotate 程序,它可以自动执行日志文件的轮换.压缩.删除和用邮件发出. 我们可以配置 logrotate 程序,以便每个日志文件可以在每天 ...

  8. logrotate测试_简单好用的日志管理工具 Logrotate

    前言 日志就像程序的生命记录仪,详细记录下了程序运行的点点滴滴. 慎重的选择记录哪些日志:在茫茫日志海中寻找真正记录问题的日志,你是不想经历的: 精心的定时压缩转移日志:故障发生了,日志却丢了,此时的 ...

  9. logrotate测试_如何检测 logrotate 的错误

    logrotate 的主要功能是将旧的 log 档改档名,并建立一个新的档案来让 syslog 存放新的 log. 错误状况 我的 Linux 系统都有持续在写入 log,但是单一的 log 档档案过 ...

最新文章

  1. appium+python自动化45-夜神模拟器连不上(adb server version (36) doesn't match this client (39); killing...)...
  2. php 添加行_php 多行数据同时插入
  3. python坐标点怎么输入_python导入坐标点的具体操作
  4. Android中的Touch事件
  5. 关于bufferKnife8.8.1点击事件无效的原因
  6. 【CodeForces - 144B 】Meeting (暴力枚举,水题,计算几何)
  7. paxos算法例子图解
  8. 纯干货!盘点各行业程序员必备技能
  9. 一款面世较早的音乐播放器-酷狗音乐播放器下载
  10. 【OpenGL】OpenGL帧缓存对象(FBO:Frame Buffer Object)
  11. c语言借助中间变量完成的作业,北京交通大学黄宇黄宇老师C语言第一次作业.doc...
  12. kubesphere master节点执行kubectl get po Unable to connect to the server: Forbidden
  13. Getshell总结
  14. Python 骚操作:微信远程控制电脑(转载)
  15. 姓氏头像制作小工具超多制作模板的姓氏头像生成器微信小程序源码最新版
  16. win10打开蓝牙_Win10隐藏技巧:如何一键开启蓝牙功能!
  17. python基础——数据可视化
  18. asp.net:如何取消设置的起始页
  19. 星球乐园 | 害怕水逆是因为你已经很久没有读完一本书
  20. UI与Particle穿插混排

热门文章

  1. scala list 接受java string_「软帝学院」Java零基础学习详解
  2. java控制语句案例_Java基础语法—流程控制语句
  3. Serverless 工程实践 | 自建 Apache OpenWhisk 平台
  4. 搜索运营有哪些玩法,你知道吗?
  5. Android单元测试读写文件,Android Studio单元测试:读取数据(输入)文件
  6. php mysql 字段备注_MySQL下读取 表/字段 的说明备注信息
  7. n条直线相交最多有几个邻补角_【东升二中数字课堂】创意微课直线的交点|Super数学璐...
  8. 网页交互动画终极指南
  9. Linux系统中病毒怎么解决
  10. Invalid VCS root mapping