一、摘要

Linux服务器上我们用Logrotate来分割归档日志文件,结合crond我们可以指定每天在某个时间自动整理日志等文档。本文主要说明了Centos下Logrotate的使用和配置的方法。

配置文件

Logrotate的配置文件位于 /etc/logrotate.conf。
Logrotate的子配置文件位于文件夹 /etc/logrotate.d/ 下,某些软件,入nginx,会在rpm命令安装后会把对应的nginx日志分割文件释放在此,用于定时整理日志文件。

如何使用

我们先试用帮助命令看一下,需要强调的是

  • -d,其翻译为什么都不做,仅仅是测试,这个参数很大程度方便了我们测试配置文件而不用担心当前的配置出差错。
  • -f,强制执行日志滚动操作。

如果想测试配置文件

# 测试所有logrotate配置
/usr/sbin/logrotate -d -v /etc/logrotate.conf # 强制执行日志滚动操作,比如nginx
/usr/sbin/logrotate -d -v /etc/logrotate.d/nginx

二、实际操作

单文件

确保openresty已经安装好了,默认的日志文件是 /usr/local/openresty/nginx/logs/host.access.log

我们需要对这个文件,每天做一次切割。

编辑文件

vim /etc/logrotate.d/openresty

内容如下:

/usr/local/openresty/nginx/logs/host.access.log {
daily
rotate
compress
copytruncate
dateext
sharedscripts
postrotate
/bin/kill -HUP `cat /usr/local/openresty/nginx/logs/nginx.pid > /dev/null` > /dev/null || true
endscript
}

参数解释:

weekly #默认每天一个日志归档
rotate #最多保存 个归档
create #日志滚动后创建一个新的日志文件
dateext #归档文件名加上日期后缀
compress #归档文件是否启用压缩
copytruncate  用于还在打开中的日志文件,把当前日志备份并截断
sharedscripts 作用是在所有的日志文件都轮转完毕后统一执行一次脚本。
dateext表示备份的日志文件后缀格式为YYYYMMDD
postrotate/endscript   在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

强制执行回滚

/usr/sbin/logrotate -vf /etc/logrotate.d/openresty

查看日志目录,就会多出一个gz文件

root@ubuntu:/usr/local/openresty/nginx/logs# ll
total
drwxr-xr-x root root Jul : ./
drwxr-xr-x root root Jul : ../
-rw-r--r-- root root Jul : access.log
-rw-r--r-- root root Jul : error.log
-rw-r--r-- root root Jul : host.access.log
-rw-r--r-- root root Jul : host.access.log-.gz
-rw-r--r-- root root Jul : nginx.pid

理论是每天会执行一次,查看任务计划

root@ubuntu:~# cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
* * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
* * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
* * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

可以发现,每天的任务计划,是6:25执行一次。

如果不想等的话,直接修改系统时间,提前一天

date -s "2019-07-16 06:24:58"

注意:等到6:25的时候,日志文件,不会立即产生。我猜测,是还有其他的脚本要执行。

等待2分钟,就会出现新的文件。

root@ubuntu:/usr/local/openresty/nginx/logs# ll
total
drwxr-xr-x root root Jul : ./
drwxr-xr-x root root Jul : ../
-rw-r--r-- root root Jul : access.log
-rw-r--r-- root root Jul : error.log
-rw-r--r-- root root Jul : host.access.log
-rw-r--r-- root root Jul : host.access.log-.gz
-rw-r--r-- root root Jul : host.access.log-.gz
-rw-r--r-- root root Jul : nginx.pid

多日志文件与通配符

一个配置条目 日志文件 { 配置项 } 不仅仅支持一个日志文件,可以配置多个文件或使用通配符,如

/var/log/httpd/access.log /var/log/httpd/error.log {
....
} # 或
/var/log/httpd/access.log
/var/log/httpd/error.log {
...
}

通配符的形式

/var/log/news/* {
...
} /var/log/news/*.log {
...
} /var/log/*/stdout.log {
...
} /var/log/*/*.log {
...
}

不仅文件名处可以用通配符,目录处也能用通配符。例如最后那个配置 /var/log/*/*.log {...} 将会对 /var/log/ 下所有目录中的 *.log 文件产生效果。比如下面那样的文件

/var/log/aa/x.log
/var/log/bb/y.log
/var/log/cc/z.log

针对多个日志文件时,归档文件也会生成在相应日志所在目录中。有了多日志文件与通配符的支持,能够通过一个配置对系统中众多日志文件采取一致的行动。

举例

查看 /usr/local/openresty/nginx/logs 目录,有3个日志文件,分别是 access.log,error.log,host.access.log。

host.access.log 已经做了滚动,现在需要对另外个日志文件,也做一下滚动。

有2种写法,先看第一种:通配符的形式

/usr/local/openresty/nginx/logs/*.log {
daily
rotate 5
compress
copytruncate
dateext
sharedscripts
postrotate
/bin/kill -HUP `cat /usr/local/openresty/nginx/logs/nginx.pid 2> /dev/null` 2> /dev/null || true
endscript
}

第二种:多个文件形式

/usr/local/openresty/nginx/logs/access.log
/usr/local/openresty/nginx/logs/error.log
/usr/local/openresty/nginx/logs/host.access.log {
daily
rotate
compress
copytruncate
dateext
sharedscripts
postrotate
/bin/kill -HUP `cat /usr/local/openresty/nginx/logs/nginx.pid > /dev/null` > /dev/null || true
endscript
}

这2种写法,效果是一样的。

先强制回滚一下

/usr/sbin/logrotate -vf /etc/logrotate.d/openresty

修改日期

date -s "2019-07-17 06:24:58"

等待2分钟,再次查看日志目录,效果如下:

root@ubuntu:/etc/logrotate.d# ll /usr/local/openresty/nginx/logs/
total
drwxr-xr-x root root Jul : ./
drwxr-xr-x root root Jul : ../
-rw-r--r-- root root Jul : access.log
-rw-r--r-- root root Jul : access.log-.gz
-rw-r--r-- root root Jul : error.log
-rw-r--r-- root root Jul : error.log-.gz
-rw-r--r-- root root Jul : host.access.log
-rw-r--r-- root root Jul : host.access.log-.gz
-rw-r--r-- root root Jul : host.access.log-.gz-rw-r--r-- root root Jul : host.access.log-.gz
-rw-r--r-- root root Jul : nginx.pid

本文参考链接:

https://blog.phpgao.com/logrotate_conf.html

https://yanbin.blog/linux-config-log-ratation-logrotate/#more-8826

Logrotate滚动openresty日志的更多相关文章

  1. 使用Linux自带日志滚动工具logrotate滚动redis日志示例

    截至到redis-5.0版本,redis仍然不会自动滚动日志文件,如果不处理则日志文件日积月累越来越大,最终将导致磁盘满告警: # ls -lh total 12G -rw-r--r-- 1 redi ...

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

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

  3. 使用logrotate做nginx日志分割

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

  4. Centos logrotate截断tomcat日志文件

    1. 设置logrotate轮转日志文件 tomcat日志目录:/usr/local/tomcat/apache-tomcat-8.5.34/logs /etc/logrotate.d/目录下创建to ...

  5. linux使用logrotate工具管理日志轮替

    对于Linux系统安全来说,日志文件是极其重要的工具.logrotate程序是一个日志文件管理工具.用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用.可以节 ...

  6. 用Linux自带的Logrotate来管理日志

    Logrotate是由cron控制,cron在规定的时间执行 " logrotate  /etc/logrotate.conf "命令.将对象日志进行转储,删除,压缩等操作... ...

  7. 用 Linux自带的logrotate 来管理日志

    大家可能都有管理日志的需要,比如定时压缩日志,或者当日志超过一定大小时就自动分裂成两个文件等.最近就接到这样一个小任务.我们的程序用的是C语言,用log4cpp的library来实现日志记录.但是问题 ...

  8. logrotate 清理tomcat日志

    rsyslog tomcat 服务器: 192.168.32.215 input(type="imfile" File="/usr/local/apache-tomcat ...

  9. 使用logrotate分割tomcat日志

    转:https://www.52os.net/articles/using-logrotate-manage-tomcat-logs.html July 28, 2014 日志是Linux系统中最重要 ...

随机推荐

  1. UOJ269【清华集训2016】如何优雅地求和【数论,多项式】

    题目描述:求 $$\sum_{k=0}^nf(k)\binom{n}{k}x^k(1-x)^{n-k}$$ 输入$n$,$f(x)$的次数上界$m$,$x$,$f(0,1,\ldots,m)$,对$9 ...

  2. Alpha冲刺(4/6)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 摸鱼 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的进度 学习如何评估代码质量 准备Al ...

  3. [HAOI 2018]染色

    传送门 Description 一个长度为\(N\)的序列, 每个位置都可以被染成 \(M\)种颜色中的某一种. 出现次数恰好为 \(S\)的颜色种数有\(i\)种, 会产生\(w_i\)的愉悦度. ...

  4. httpd.exe你的电脑中缺失msvcr110.dll怎么办(WIN2008服务器环境装WAMP2.5出现的问题)

    httpd.exe你的电脑中缺失msvcr110.dll怎么办 去微软官方下载相应的文件 1 打开上面说的网址 Download and install, if you not have it alr ...

  5. tomcat启动报错java.lang.OutOfMemoryError:PermGen space解决办法

    tomcat启动错误提示: 严重: Error waiting for multi-thread deployment of WAR files to completejava.util.concur ...

  6. maven 发现有一个包 需要升级包版本

    maven有个包需要升级版本号,但是升级完了之后,怎么编译都是原来的: 后来修改了一下版本号,然后编译,就好了,再把版本号改回来就行了: 本地版本库地址:File==>Other Setting ...

  7. EF 调试跟踪生成的SQL语句

    IQueryable query = from x in appEntities select x; var sql = ((System.Data.Objects.ObjectQuery)query ...

  8. Cesium学习笔记-工具篇20-PrimitiveTexture自定义渲染-贴图【转】

    前几篇博客我们了解了自定义点.线.面绘制,这篇我们接着学习cesium自定义纹理贴图.我们完成点线面的绘制,只是绘制出了对象的框架,没有逼真的外观.逼真外观是需要设置材质来实现:Material . ...

  9. excel打开csv 出现乱码

    现在做舆情分析的相关项目,在数据处理的时候,发现了一个问题.将数据写入到csv文件,用excel打开(默认)就会出现乱码,如果将数据写入到.xlsx文件就不会出现乱码,因为csv是通用格式,所以我猜想 ...

  10. Win10访问共享文件夹如何取消用户名密码

    win10中,开启guest(来宾)账户的步骤是: 右击win10左下角Windows的图标->计算机管理->计算机管理(本地)->系统工具->本地用户和组->用户-&g ...