手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

Linux使用logrotate來(lái)切割日志文件

2017-05-04 17:25:33 2634

程序在運(yùn)行的時(shí)候?yàn)榱肆私膺\(yùn)行狀態(tài),會(huì)輸出日志文件,時(shí)間久了日志文件會(huì)變得非常大,甚至達(dá)到GB級(jí)別。我在golang應(yīng)用里使用logrus包來(lái)打日志,配置和使用都很方便,就是沒(méi)有日志分割的功能,應(yīng)用在線上運(yùn)行一個(gè)月后日志文件都已經(jīng)達(dá)到上百兆。后來(lái)發(fā)現(xiàn)了logrotate,這是centos自帶的日志分割工具,都不用安裝額外組件就能實(shí)現(xiàn)定時(shí)分割日志。

1.運(yùn)行原理

logrotate由系統(tǒng)的cron運(yùn)行,位置在/etc/cron.daily/logrotate

?

1
2
3
4
5
6
7
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
 /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

可以看到入口配置文件是/etc/logrotate.conf,依次運(yùn)行/etc/logrotate.conf.d里的配置文件 如果發(fā)現(xiàn)配置的logrotate沒(méi)有執(zhí)行,可以看下系統(tǒng)的crond服務(wù)有沒(méi)有開(kāi)啟

2.配置

如果有安裝nginx,可以參考nginx里的配置例子

?

1
2
3
4
5
6
7
8
9
10
11
12
/var/log/nginx/*log {
 create 0644 nginx nginx
 daily
 rotate 10
 missingok
 notifempty
 compress
 sharedscripts
 postrotate
  /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
 endscript
}

第一行定義的是日志文件的路徑,可以用*通配,一般可以定義成*.log來(lái)匹配所有日志文件。也可以指定多個(gè)文件,用空格隔開(kāi),比如

?

1
2
3
/var/log/nginx/access.log /var/log/nginx/error.log {
  
}

花括號(hào)里面是日志切割相關(guān)的參數(shù),下面是常用的切割參數(shù)

  1. compress 是否開(kāi)啟壓縮,壓縮格式gzip

  2. 不開(kāi)啟壓縮

  3. compresscmd 自定義壓縮命令

  4. compressexty 壓縮文件名后綴

  5. compressoptions 壓縮選項(xiàng)

  6. copy 復(fù)制一份文件

  7. create 后面跟mode owner group,設(shè)置新日志文件的權(quán)限

  8. daily 按天分割

  9. weekly 按周分割

  10. monthly 按月分割

  11. rotate 后面跟數(shù)字,表示需要保留的文件歷史記錄,超過(guò)數(shù)量就會(huì)刪除,或者通過(guò)郵件發(fā)送

  12. size 后面跟文件大小,比如100k、100M,超過(guò)這個(gè)大小后分割

  13. missingok 忽略不存在的文件,不報(bào)錯(cuò)

  14. notifempty 不分割空文件

  15. sharedscripts 配合postrotate、prerotate,讓他們只執(zhí)行一次

  16. postrotate/endscript 文件分割完后,執(zhí)行postrotate、endscript之間的命令

  17. prerotate/endscript 文件分割完前,執(zhí)行prerotate、endscript之間的命令

下面看幾個(gè)例子

?

1
2
3
4
5
6
7
8
9
/var/log/httpd/error.log {
 rotate 5
 mail i@wuyuans.com
 size=100k
 sharedscripts
 postrotate
  /sbin/killall -HUP httpd
 endscript
}

切割/var/log/httpd/error.log日志文件,超過(guò)100k后切割,保留最新的5個(gè)歷史記錄,超過(guò)5個(gè)的郵件發(fā)送到fss@qq.com,postrotate里的的命令是為了讓httpd重新打開(kāi)日志文件。

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/var/lib/mysql/mysqld.log {
 # create 600 mysql mysql
 notifempty
 daily
 rotate 3
 missingok
 compress
 postrotate
 # just if mysqld is really running

提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
<strike id="2w0iw"><input id="2w0iw"></input></strike><ul id="2w0iw"></ul>
<strike id="2w0iw"><rt id="2w0iw"></rt></strike>
<fieldset id="2w0iw"><menu id="2w0iw"></menu></fieldset>
  • <strike id="2w0iw"><rt id="2w0iw"></rt></strike><ul id="2w0iw"><sup id="2w0iw"></sup></ul>
      <strike id="2w0iw"><input id="2w0iw"></input></strike>
      <fieldset id="2w0iw"><menu id="2w0iw"></menu></fieldset>