1. 程式人生 > >logrotate 日誌分割工具

logrotate 日誌分割工具

由於tomcat 產生的日誌量過大,有資料顯示"當Tomcat的日誌檔案catalina.out的大小大於2GB時,Tomcat程式崩潰時將有可能會啟動失敗並且不會有任何錯誤資訊提示"
目前,以tomcat的輸出日誌catalina.out 的量非常大,需要對其進行日誌分割,日誌分割工具用到了logrotate。 
logrotate 是一個日誌管理程式,用來把日誌檔案按要求切割,保留指定的份數,並且建立新日誌。稱作"轉儲"。(旋轉; 使轉動; 使輪流,輪換; 交替;)
logrotate 的執行依賴crond 服務實現,具體實現細節可以檢視
cat  /etc/cron.daily/logrotate 
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0

crontab 的配置檔案

[[email protected] ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * root run-parts /etc/cron.hourly  
02 4 * *
* root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly

規定不同型別的定時任務執行的時間

logrotate 的配置資訊在/etc/logrotate.conf 中的是全域性配置檔案,針對不同服務的配置檔案放在 /etc/logrotate.d/中,如果與全域性配置衝突,以/etc/logrotate.d/ 為準。

logrotate 的執行分為三步,判斷系統的日誌檔案,建立轉儲計劃及引數,通過cron daemon 執行crontab 預設執行的程式碼。 logrotate 的指令碼放在/etc/cron.daily/logrotate 中

logrotate.conf 配置引數的含義:

# see "man logrotate" for details
# rotate log files weekly
weekly                      #每週輪轉一次
# keep 4 weeks worth of backlogs
rotate 4                    #保留四個日誌檔案
# create new (empty) log files after rotating old ones
create                      #rotate後,建立一個新的空檔案
# uncomment this if you want your log files compressed
#compress                   #預設是不壓縮的
# RPM packages drop log rotation information into this directory

include /etc/logrotate.d    #這個目錄下面配置檔案生效
# no packages own wtmp — we’ll rotate them here
/var/log/wtmp {             #定義/var/log/wtmp這個日誌檔案;
    monthly                 #每月輪轉一次,取代了上面的全域性設定的每週輪轉一次;
    minsize 1M              #定義日誌必須要大於1M大小才會去輪轉;
    create 0664 root utmp   #新的日誌檔案的許可權,屬主,屬主;
    rotate 1                #保留一個,取代了上面的全域性設定的保留四個;
}
/var/log/btmp {             #定義/var/log/btmp這個日誌檔案;
    missingok               #如果日誌丟失, 不報錯;
    monthly
    create 0600 root utmp
    rotate 1
}

如果特定的配置檔案沒有指定相應的項,那麼全域性配置就會起作用。
logrotate 常用的引數有:

daily                     #指定轉儲週期為每天
weekly                    #指定轉儲週期為每週;
monthly                   #指定轉儲週期為每月;
rotate count              #指定日誌檔案刪除之前轉儲的次數,0指沒有備份,5指保留5個備份;
compress                  #通過gzip壓縮轉儲以後的日誌;
nocompress                #不需要壓縮時,用這個引數;
delaycompress             #延遲壓縮,和compress一起使用時,轉儲的日誌檔案到下一次轉儲時才壓縮;
nodelaycompress           #覆蓋delaycompress選項,轉儲同時壓縮;
copytruncate              #用於還在開啟中的日誌檔案,把當前日誌備份並截斷;
nocopytruncate            #備份日誌檔案但是不截斷;
create mode owner group   #轉儲檔案,使用指定的檔案模式建立新的日誌檔案;
nocreate                  #不建立新的日誌檔案;
errors address            #專儲時的錯誤資訊傳送到指定的Email地址;
ifempty                   #即使是空檔案也轉儲,這個是logrotate的預設選項;
notifempty                #如果是空檔案的話,不轉儲;
mail address              #把轉儲的日誌檔案傳送到指定的E-mail地;
nomail                    #轉儲時不傳送日誌檔案;
olddir directory          #轉儲後的日誌檔案放入指定的目錄,必須和當前日誌檔案在同一個檔案系統;
noolddir                  #轉儲後的日誌檔案和當前日誌檔案放在同一個目錄下;
prerotate/endscript       #在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行;
postrotate/endscript      #在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行;
tabootext [+] list        #讓logrotate不轉儲指定副檔名的檔案,預設的副檔名是:.rpm-orig, .rpmsave,v,和~ ;
size size                 #當日志文件到達指定的大小時才轉儲,Size可以指定bytes(預設)以及KB(sizek)或者MB(sizem);
postrotate <s> endscript  #日誌輪換過後指定指定的指令碼,endscript引數表示結束指令碼;
sharedscripts             #共享指令碼,下面的postrotate <s> endscript中的指令碼只執行一次即可;

logrotate 分割日誌的方法主要有兩種:
一種是不使用指定引數”copytruncate” 。這種方法會建立一個新的日誌檔案給程式輸出日誌,這個方法要重新啟動程序。 有些程式提供了重新開啟日誌的介面, 如果一個程式輸出了多個需要滾動的指令碼,那麼就需要使用sharedscripts 引數,當所有的日誌都重新命名了後,再進行通知。
第二種是使用指定引數”copytruncate” 。 這種方法不會更換當前程式輸出日誌的檔案。

重新命名程式當前正在輸出日誌的程式。因為重新命名只會修改目錄檔案的內容,而程序操作檔案靠的是inode編號,所以並不影響程式繼續輸出日誌。

建立新的日誌檔案,檔名和原來日誌檔案一樣。雖然新的日誌檔案和原來日誌檔案的名字一樣,但是inode編號不一樣,所以程式輸出的日誌還是往原日誌檔案輸出。

通過某些方式通知程式,重新開啟日誌檔案。程式重新開啟日誌檔案,靠的是檔案路徑而不是inode編號,所以開啟的是新的日誌檔案。
/var/log/nginx/*log {
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    su root
    postrotate
        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :
    endscript
}

第二種copytruncate 是將正在輸出的日誌copy出來,再清空(trucate)原來的日誌。
這個方案再日誌copy 到清空檔案這段時間內,日誌資訊會丟失。 所以,大部分程式都提供了更新開啟日誌的功能。

執行剛剛建立的配置:

cat /etc/logrotate.d/tomcat 
/usr/local/tomcat-huarun/log/catalina.out  {
    rotate 4
    missingok
    notifempty
    size 500M
    copytruncate
    create 700 root root

}
logrotate -f /etc/logrotate.d/tomcat

相關推薦

logrotate 日誌分割工具的配置使用

Logrotate是linux下的一個用於對日誌檔案分割,壓縮或者傳送郵件的的工具。當系統中的某個程序會定期生成大量的log檔案時,logrotate可以定期(每天一次,每週一次等等)自動化的將這些log檔案進行分割壓縮,刪除等操作。          一般情況下,logr

logrotate 日誌分割工具

由於tomcat 產生的日誌量過大,有資料顯示"當Tomcat的日誌檔案catalina.out的大小大於2GB時,Tomcat程式崩潰時將有可能會啟動失敗並且不會有任何錯誤資訊提示" 目前,以tomcat的輸出日誌catalina.out 的量非常大,需要對其

logrotate---日誌分割

logrotate命令用於對系統日誌進行輪轉、壓縮和刪除,也可以將日誌傳送到指定郵箱。使用logrotate指令,可讓你輕鬆管理系統所產生的記錄檔案。每個記錄檔案都可被設定成每日,每週或每月處理,也能在檔案太大時立即處理。您必須自行編輯,指定配置檔案,預設的配置檔案存放在/etc/logrotate.conf

logrotate日誌管理工具

日誌實在是太有用了,它記錄了程式執行時各種資訊。通過日誌可以分析使用者行為,記錄執行軌跡,查詢程式問題。可惜磁碟的空間是有限的,就像飛機裡的黑匣子,記錄的資訊再重要也只能記錄最後一段時間發生的事。為了節省空間和整理方便,日誌檔案經常需要按時間或大小等維度分成多份,刪除時間久遠的日誌檔案。這就是通常說的

伺服器日誌過大,日誌分割工具--cronolog

本文將介紹一款日誌分割軟體cronolog。日誌對於每位從事IT技術領域工作的人員來說都是相當重要的,對於系統管理員來說,系統日誌、系統服務的日誌以及應用軟體的日誌是他們每天都需要關注的,從日誌中可以發現系統存在的問題以及一些危險的徵兆等等;對於開發人員來說,應用軟體日誌、debug日誌對於瞭解系統當時的環

Linux自帶 Logrotate 日誌切割工具配置詳解

多少 日誌丟失 logger 管理工具 utm 拷貝 刪除 code 系統 Logrotate 程序是一個日誌文件管理工具。用於分割日誌文件,壓縮轉存、刪除舊的日誌文件,並創建新的日誌文件,下面就對logrotate日誌輪轉的記錄: 1.1 Logrotate配置文件介紹

linux日誌分割處理工具logrotate

logrotate 程式是一個日誌檔案管理工具。用來把舊的日誌檔案刪除,並建立新的日誌檔案,我們把它叫做“轉儲”。我們可以根據日誌檔案的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程式來執行。 logrotate 程式還可以用於壓縮日誌檔案,以及傳送日誌到指定

Nginx日誌切割工具——logrotate

1、安裝 logrotate是Linux系統自帶,無需安裝 2、配置 進入【/etc/logrotate.d/nginx】檔案修改配置 # 需要備份的日誌路勁,一個或多個都可以 /data/logs/nginx1/*.log /data/logs/nginx2/*.log { daily ro

關於使用logrotate對nginx的日誌分割時資料夾許可權問題解答

在使用logrotate對nginx的日誌進行分割的時候系統報錯,error資訊:error: skipping "/var/log/nginx/access.log" because parent directory has insecure permissions (It

使用 logrotate 進行 nginx 日誌分割

使用logrotate指令,可讓你輕鬆管理系統所產生的記錄檔案。它提供自動替換,壓縮,刪除和郵寄記錄檔案,每個記錄檔案都可被設定成每日,每週或每月處理,也能在檔案太大時立即處理。您必須自行編輯,指定配置檔案,預設的配置檔案存放在/etc目錄下,檔名稱為logro

linux日誌切割工具 logrotate

centos-7.6系統預設安裝logrotate,預設的配置檔案: /etc/logrotate.conf /etc/logro

NLog日誌管理工具

控制臺應用程序 自動 esp log sdn clas 輸出 ons nbsp 一、通過VS建立一個控制臺應用程序。 二、打開程序包管理器控制臺。具體操作如下:【工具】》【庫程序包管理器】》【程序包管理器控制臺】。 三、在程序包管理器控制臺下輸入命令:Insta

Logwatch日誌分析工具

logwatch日誌監控介紹:Logwatch是使用 Perl 開發的一個日誌分析工具。Logwatch能夠對Linux 的日誌文件進行分析,並自動發送mail給相關處理人員,可定制需求。Logwatch的mail功能是借助宿主系統自帶的mail server 發郵件的,所以系統需安裝mail server

工具類)Linux筆記之終端日誌記錄工具script

工具類 article 空間 post 令行 有時 可能 關於 edit 在學習Linux時,有時候終端的打印消息對於我們很重要,可是終端顯示也是有一定的緩沖空間的。當信息打印許多時,前面的信息就會被覆蓋掉。所以這裏網上搜索了一下這方面的介紹。現總結例如以下:

Tomcat 的 catalina.out 日誌分割

tom ins 重啟 清理 log ots 安裝 str nbsp 一、背景 Tomcat 的 catalina.out 日誌量不斷增加,占用空間較大,且默認是不滾動的。因此,需要對其進行日誌分割,並進行清理。 本文選用 Cronolog 對其進行分割。 二、安裝

Tomcat7 catalina.out 日誌分割

tomcat7 catalina.out 日誌分割安裝過程如下:下載(最新版本) # wget http://cronolog.org/download/cronolog-1.6.2.tar.gz2、解壓縮 # tar zxvf cronolog-1.6.2.tar.gz3、進入cronolog

Nginx日誌分割腳本

nginx日誌分割腳本1.Nginx日誌分割腳本1:#!/bin/shLOGS_PATH=/usr/local/nginx/logsYESTERDAY=$(date -d "yesterday" +%Y-%m-%d)mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_

pt-query-digest查詢日誌分析工具

tcp 技術 一段時間 ext 所在 mda pop json sdn 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 工具簡介 pt-query-digest是用於分析mysql慢查詢的一個工具,它可以分析binlog、General log、slo

【Haproxy】實現日誌分割

haproxy緊接著上一篇的開啟日誌記錄來做後續的日誌分割,我沒有涉及到安裝任何軟件,但是需要借助crond計劃任務來實現制作分割腳本[[email protected] ~]# vim /etc/haproxy/haproxy_log_cut.sh #!/bin/bash # this is sc

慢查詢日誌分析工具之pt-query-digest

lan git bash pre 日誌分析 windows images git 所有 curl 簡介 pt-query-digest 是用於分析mysql慢查詢的一個工具,與mysqldumpshow工具相比,py-query_digest 工具的分析結果更