logrotate 进行nginx日志分割
http://www.williamsang.com/archives/1254.html
日志分割常用方法:
- 自己寫腳本分割
- 使用linux自帶的logrotate
前者靈活,可以應(yīng)對各種需求,自定義文件夾、文件名。后者配置簡單,使用方便。
下面我們以分割nginx日志為例介紹一下使用logrotate分割日志實例。
logrotate簡單介紹
logrotate使用cron按時調(diào)度執(zhí)行,日志的執(zhí)行過程原理為不斷改名稱:比如你有個access.log文件,需要保留4個日志文件,那么logrotate是這么輪轉(zhuǎn)的:
access.log滿足輪轉(zhuǎn)條件?(調(diào)度時間,日志大小是否滿足要求)如果需要輪轉(zhuǎn)則進行下列步驟,否則跳過
access.log.3存在?如果存在則刪除
access.log.2如果存在則改名為access.log.3
access.log.1如果存在則改名為access.log.2
access.log如果存在則改名為access.log.1
創(chuàng)建一個空的access.log文件
如下圖所示:
logrotate配置文件一般在:
/etc/logrotate.conf 通用配置文件,可以定義全局默認(rèn)使用的選項。
/etc/logrotate.d/xxx 自定義服務(wù)配置文件
我們可以看下/etc/logrotate.conf里面的內(nèi)容
| 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 | # 一個星期輪轉(zhuǎn)一次 weekly #保留四個日志 rotate 4 # 輪轉(zhuǎn)舊的日志文件后創(chuàng)建新日志文件 create # 使用日期作為輪轉(zhuǎn)日志的后綴 dateext # 壓縮存儲日志 #compress # 包含某個目錄下的自定義日志輪轉(zhuǎn) 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日志,配置文件內(nèi)容如下:
| 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 } |
第一行:指明日志文件位置,多個以空格分隔
第二行:調(diào)用頻率,有:daily,weekly,monthly可選
第三行:總共輪換多少個日志文件,這里為保留15個
第四行:限制條件,大于10M的日志文件才進行分割,否則不操作
sharedscripts用于指明以下是執(zhí)行輪轉(zhuǎn)前和輪轉(zhuǎn)后自定義執(zhí)行的命令,比如postrotate和endscript表示,輪轉(zhuǎn)后,執(zhí)行nginx的重新加載配置文件,避免日志輪轉(zhuǎn)后不寫日志。如果要輪轉(zhuǎn)前執(zhí)行某個命令可以使用prerotate代替postrotate即可,兩者可同時存在。
可以通過man logrotate查看更多選項
默認(rèn)logrotate是通過crontab定期執(zhí)行的,我們也可以手動執(zhí)行查看結(jié)果:
- #?logrotate -vf /data/log/nginx/access.log
v選項表示查看詳細(xì)執(zhí)行過程
f表示強制執(zhí)行日志輪轉(zhuǎn)(不然時間不到,日志文件大小等條件不滿足,不會執(zhí)行)
強烈建議執(zhí)行一下,了解下執(zhí)行過程。
驗證是否執(zhí)行,查看cron的日志即可
- # grep logrotate /var/log/cron
參考:
- 《鳥個的linux私房菜》,本文圖取于此
轉(zhuǎn)載于:https://www.cnblogs.com/dingxiaoyue/p/4926791.html
總結(jié)
以上是生活随笔為你收集整理的logrotate 进行nginx日志分割的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学图形(2.23)Cylindric
- 下一篇: java jdk1.5 对for循环遍历