1. 程式人生 > >logrotate進行日誌管理

logrotate進行日誌管理

使用:
    logrotate CONF_FILE+

描述:
    可自動輪轉,壓縮,刪除,郵寄日誌檔案。可每天,每週,每月或日誌檔案達到一定大小時進行操作。

    通常logrotate是一個每天的cron計劃,一般不會在一天內多次修改日誌,除非輪轉是基於日誌大小的,
    或者logrotate被多次執行,使用了-f(--force)項。

    命令列上可指定任何多個配置檔案。
    後面的配置會覆蓋前面的配置,所以配置檔案的載入順序很重要。
    通常需要在一個配置檔案中include其他配置檔案,具體參見include指令用法。
    如果在命令列上給出了一個目錄,那麼該目錄下所有檔案都將被用作配置檔案。

    如果沒有引數,logrotate就列印版本等資訊。如果在輪轉日誌時發生錯誤,會以非0狀態退出。

選項:
    -d    debug模式,隱含-v,不會對日誌檔案做實際操作
    -f, --force
        強制輪轉日誌
    -m, --mail <command>
        郵寄日誌時使用的命令
    -s, --state <statefile>
        指定另一個state檔案
    --usage
        列印幫助
    -v, --verbose
        詳細資訊

配置檔案
    logrotate會讀取每一個配置檔案,配置檔案中可對global和具體log檔案配置。
    本地配置(log檔案配置)覆蓋global配置,後來的配置覆蓋先前的配置。

       # sample logrotate configuration file            註釋行
       compress                            輪轉後進行壓縮

       /var/log/messages {                    指定日誌檔案路徑
           rotate 5                        保留5個輪轉檔案
           weekly                        每週輪轉
           postrotate                        輪轉之後執行的命令(在壓縮舊日誌之前)
               /usr/bin/killall -HUP syslogd
           endscript
       }

       "/var/log/httpd/access.log" /var/log/httpd/error.log {    指定了兩個日誌檔案
                                    檔名中有空格,要用""
                                    支援' " \的shell引用規則字元
           rotate 5                        保留5個輪轉檔案
           mail
[email protected]
                    解壓後郵寄超過5次輪轉的老日誌檔案,而不是刪除
           size 100k                        日誌檔案達到100K時就進行輪轉
           sharedscripts                    表示postrotate指令碼在壓縮了日誌之後只執行一次
           postrotate
               /usr/bin/killall -HUP httpd
           endscript
       }

       /var/log/news/* {            所有/var/log/news/下的檔案
                            萬用字元*,會輪轉包括之前輪轉的檔案,需要olddir指令
                            或者*.log來指定只有.log字尾的檔案
           monthly                每月輪轉
           rotate 2                
           olddir /var/log/news/old        配合指定檔案時的*萬用字元使用
           missingok                如果指定的目錄不存在,logrotate會報錯,此項用來關閉報錯
           postrotate
               kill -HUP `cat /var/run/inn.pid`
           endscript
           nocompress                不壓縮
       }

=====================================================
詳細選項解釋:

rotate COUNT
    輪轉COUNT次,也就是最多保留COUNT個輪轉備份。
    超出的被刪除或郵寄。
    設定為0,則不儲存輪轉的老日誌。
start COUNT
    輪轉檔名基於這個數字。
    例如,指定0時,原日誌檔案輪轉的備份檔案以.0為副檔名,如果指定9,就直接從.9開始跳過0-8
    然後再繼續向後輪轉rotate指定的次數。

compress
    預設使用gzip壓縮老日誌
nocompress
    不壓縮老日誌
compresscmd
    指定壓縮命令,預設gzip
uncompresscmd
    指定解壓命令,預設gunzip
compressext
    如果啟用了壓縮,指定在壓縮了的日誌檔案上使用哪個擴充套件。預設隨配置的壓縮命令
compressoptions
    可以傳送命令列選項給壓縮程式,預設的gzip使用-9選項(最大壓縮率)
delaycompress
    延遲到下次輪轉時壓縮之前的日誌檔案。
    需要與compress項連用,當程式有時不能關閉寫日誌檔案時可使用此項。
nodelaycompress
    不延遲壓縮

copy
    拷貝日誌檔案,不修改原有檔案。
    給當前日誌檔案做快照,或其他工具需要截斷或解析檔案時,可使用此項
    使用此項時,create項就沒用了,因為老日誌檔案佔著位置
nocopy
    留下原日誌檔案而不復制
copytruncate
    在建立了拷貝後截斷原日誌檔案到0大小,而不是用移動就日誌檔案再建立新檔案的方法。
    可用於日誌一些程式不關閉日誌檔案一直寫的情況。
    注意,在拷貝檔案和截斷檔案時有一個非常小的時間片,所以可能會丟失日誌資訊。
    使用此項時,create無效
nocopytruncate
    建立拷貝後不截斷原日誌檔案
create MODE OWNER GROUP
    在輪轉動作之後,postrotate指令碼執行之前,立即使用剛輪轉的日誌檔名建立日誌檔案。
    MODE 指定日誌檔案的許可權(0660之類)
    OWNER 指定日誌檔案的屬主
    GROUP 指定日誌檔案的屬組
    可省略任何上述屬性,省略的屬性從原檔案繼承,可使用nocreate項來關閉
nocreate
    不建立新的日誌檔案

daily
    每天輪轉日誌檔案
weekly
    如果當前的星期幾比上次輪轉的星期幾少,或者過了一個多星期,就會發生輪轉
    通常是在每週的第一天輪轉,如果logrotate不是每天執行的,會在第一次有機會時進行輪轉。
monthly
    一月中logrotate第一次執行時進行輪轉(通常是一月的第一天)
yearly
    如果當前年份不同於上次輪轉的年份,則進行日誌輪轉

dateext
    歸檔舊日誌檔案時,檔名新增YYYYMMDD形式日期,可用dateformat選項擴充套件配置。
nodateext
    不使用dateext副檔名
dateformat FORMAT_STRING
    使用strftime(3)類似的格式指定dateext的格式,只允許%Y %m %d和%s指定符。
    預設為 -%Y%m%d。
    注意:擴充套件中分割日誌的字元也是日期格式的一部分,
    系統時鐘需要設定到2001-09-09之後,%s才能正確工作
extension EXT
    日誌檔案可在輪轉後使用指定的EXT副檔名。
    如果使用壓縮,通常EXT後還會加上壓縮檔案的副檔名,通常是.gz。
    例如想把mylog.foo輪轉為mylog.1.foo.gz而不是mylog.foo.1.gz

ifempty
    預設項,即使日誌是空的也進行輪轉,覆蓋notifempty項
notifempty
    如果日誌為空,則不進行輪轉

include FILE_OR_DIRECTORY
    讀取include指令下的檔案。
    如果是目錄,在繼續處理包含的檔案之前,按字母順序讀取目錄下大部分檔案(只讀取普通檔案)
        目錄或管道檔案等,還有使用指定副檔名的檔案不讀取
        用tabooext指令定義禁忌副檔名。
    include指令不能出現在日誌檔案定義中。
tabooext [+] LIST
    修改當前禁忌副檔名列表。
    如果列表前使用了+,表示將LIST加到當前列表中,否則就替換當前列表。
    預設包含:.rpmorig, .rpmsave, .v, .swp, .dpkg-dist, .dpkg-old, .dpkg-new, .disabled

mail ADDRESS
    當日志輪轉超過保留數時,多出的會mail到ADDRESS。
    可在log定義中使用nomail指令來不郵寄該log
nomail
    不郵寄日誌
mailfirst
    與mail指令連用,郵寄剛輪轉的日誌,而不是期滿的日誌(超出數量要被刪除的)
maillast
    預設項,與mail連用,郵寄超出rotate數量要被刪除的日誌。

maxage COUNT
    刪除COUNT天前的輪轉備份。
    只在輪轉動作時檢查日誌檔案的時間戳。
    如果配置了maillast和mail指令,刪除的輪轉備份會被郵寄。
minsize SIZE
    日誌檔案增長到超過SIZE bytes時進行輪轉,但不會在額外指定的時間間隔之前(daily,weekly等)。
    相關的size指令與其類似,但size與間隔指令互斥,不考慮時間而直接進行輪轉。
    而minsize指令要考慮大小和時間戳。
size SIZE
    超過SIZE時輪轉,SIZE預設單位是KB,可使用M,G來指定MB和GB。
shred
    預設關閉
    刪除檔案使用shred -u(銷燬)而不是unlink()系統呼叫。
    可確保刪除日誌後,檔案不可讀(對磁碟傷害大)。
shredcycles COUNT
    呼叫shred在刪除日誌檔案前覆寫COUNT次,不使用此項時,就按shred預設次數覆寫。
noshred
    刪除就檔案時不使用shred

missingok
    如果日誌檔案不存在,繼續處理下一個檔案而不產生報錯資訊。
nomissingok
    預設項,如果日誌檔案不存在,就產生錯誤。

olddir DIRECTORY
    輪轉的日誌放到DIRECTORY目錄中,目錄必須與日誌檔案在同一物理裝置上,
    如果沒指定絕對路徑,則假定該目錄在與日誌目錄下。
noolddir
    日誌只在它們的當前目錄中輪轉。

sharedsctipts
    通常prerotate和postrotate指令碼為每一個輪轉的日誌執行,也就是說一個單獨的指令碼可能因為日誌輪轉定義
    中匹配了多個檔案時(例如/var/log/news/*),該指令碼會執行多次。
    指定此項,指令碼只對所有匹配的日誌檔案統一執行一次。
    如果匹配的日誌都不需要輪轉,指令碼也不會執行。
    如果指令碼錯誤退出,剩下的動作也不會為任何日誌執行。
    隱含create項,可被nosharedscripts覆蓋。
nosharedscripts
    預設項
    為每一個輪轉的日誌執行prerotate和postrotate
    如果指令碼錯誤退出,剩下的動作只不對影響到的日誌執行。
prerotate/endscript
    在prerotate和endscript之間的行(他倆自己各佔一行),在日誌檔案被輪轉之前並且有需要輪轉時,才會執行。
    該指令只能用於log檔案定義中。
postrotate/endscript
    在prerotate和endscript之間的行,在日誌檔案被輪轉之後執行。
    該指令只能用於log檔案定義中。
firstaction/endscript
    在firstaction和endscript之間的行,在輪轉所有匹配了萬用字元的日誌被輪轉之前,
    在prerotate執行之前,並且至少要有一個日誌需要被輪轉時,才會執行。
    只能用於log檔案定義中,如果指令碼錯誤退出,就不再繼續往下進行。
lastaction/endscript
    在lastaction和endscript之間的行,在輪轉了所有匹配的日誌後,在postrotate執行之後,
    並且至少要有一個日誌被輪轉了的情況下,才會執行。
    只能用於log檔案定義中,如果指令碼錯誤退出,只顯示一個錯誤資訊作為最後的動作。

相關推薦

logrotate進行日誌管理

使用:     logrotate CONF_FILE+ 描述:     可自動輪轉,壓縮,刪除,郵寄日誌檔案。可每天,每週,每月或日誌檔案達到一定大小時進行操作。     通常logrotate是一個每天的cron計劃,一般不會在一天內多次修改日誌,除非輪轉是基於日誌大小的,     或者logrotate

使用log4j進行日誌管理

基本使用 return 自定義 jar trac mil bsp family ogg 17.1、Log4j簡介 作用: 1、 跟蹤代碼的運行軌跡。 2、 輸出調試信息. 三大組成: 1、 Logger類-生成日誌。 2、 Appender類-定義日誌輸出的目的地。 3

syslog-ng使用logrotate進行日誌切片壓縮

logrotate是linux的預設日誌切割工具。系統預設會將syslog使用這個切割。 如果將系統的syslog替換成syslog-ng,則同時也需要修改logroate才能正常使用它的切片功能。 cd /etc/logrotate.d cp syslog /home/

Java使用log4j進行日誌管理

log4j是一個開源的日誌工具包,可以提供很好的日誌支援。可以通過配置檔案,定義日誌輸出的等級,日誌檔案格式,存放位置,儲存策略等。 1.引入log4j包 到官網下載所需要的jar包或者原始

JavaEE——使用log4j進行日誌管理

1、Log4j簡介   作用: 1、 跟蹤程式碼的執行軌跡。 2、 輸出除錯資訊 三大組成: 1、 Logger類-生成日誌。 2、 Appender類-定義日誌輸出的目的地。 3、 Layout類-指定日誌輸出的格式。 2、Logger元件           

logrotate 日誌管理

tail net 第一部分 details ... 配置文件詳解 sed 日誌文件 sse a.logrotate 簡介 logrotate是一個日誌管理程序,用來把舊的日誌文件刪除(備份),並創建新的日誌文件,這個過程稱為“轉儲”。 我們可以根據日誌的大小,或者根據其使用

使用EventLog Analyzer進行VMware日誌管理

-o 圖片 col 分享 com ces analyze eventlog jpg 使用EventLog Analyzer進行VMware日誌管理

logrotate日誌管理工具

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

Kubernetes-基於EFK進行統一的日誌管理原理

1、統一日誌管理的整體方案 通過應用和系統日誌可以瞭解Kubernetes叢集內所發生的事情,對於除錯問題和監視叢集活動來說日誌非常有用。對於大部分的應用來說,都會具有某種日誌機制。因此,大多數容器引擎同樣被設計成支援某種日誌機制。對於容器化應用程式來說,最簡

基於EFK進行統一的日誌管理_Kubernetes中文社群

1、統一日誌管理的整體方案 通過應用和系統日誌可以瞭解Kubernetes叢集內所發生的事情,對於除錯問題和監視叢集活動來說日誌非常有用。對於大部分的應用來說,都會具有某種日誌機制。因此,大多數容器引擎同樣被設計成支援某種日誌機制。對於容器化應用程式來說,最簡單和最易接受的日誌記錄方法是將日誌

使用Spring進行統一日誌管理 + 統一異常管理

統一日誌和異常管理配置好後,SSH專案中程式碼以往散落的log.info() 和 try..catch..finally 再也不見蹤影,統一日誌異常實現類。 1,統一日誌處理實現類 package net.xnzz.util; import org.aopallia

Kubernetes-基於EFK進行統一的日誌管理

1、統一日誌管理的整體方案 通過應用和系統日誌可以瞭解Kubernetes叢集內所發生的事情,對於除錯問題和監視叢集活動來說日誌非常有用。對於大部分的應用來說,都會具有某種日誌機制。因此,大多數容器引擎同樣被設計成支援某種日誌機制。對於容器化應用程式來說,最簡單和最易接受的

JAVA學習筆記_利用slf4j進行log4j日誌管理

slf4j介紹 slf4j官網:http://www.slf4j.org/ SLF4J,即簡單日誌門面(Simple Logging Facade for Java),不是具體的日誌解決方案,它只服務於各種各樣的日誌系統。SLF4J所提供的核心API是一些

使用 logrotate 進行 nginx 日誌分割

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

logrotate切割日誌後,新的日誌還是寫入到老的日誌文件中

logrotate線上生產環境中,安裝了dnsmasq,並記錄日誌。由於每一次dns查詢都會生產日誌,考慮到日誌量越來越大,就用logrotate做日誌輪轉。配置如下:/var/log/dnsmasq/dnsmasq.log { daily //按天輪轉日誌 rotat

NLog日誌管理工具

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

Nginx教程(三) Nginx日誌管理

代理服務器 pla load 配置文件 404頁 base lsp bsp 知識 Nginx教程(三) Nginx日誌管理 1 日誌管理 1.1 Nginx日誌描述 通過訪問日誌,你可以得到用戶地域來源、跳轉來源、使用終端、某個URL訪問量等相關

JAVA中使用log4j及slf4j進行日誌輸出的方法

cto 所在 inf 官方 pat etl 註意 actor 結果   JAVA中輸出日誌比較常用的是log4j,這裏講下log4j的配置和使用方法,以及slf4j的使用。 一、下載log4j的架包,並導入項目中,如下: 二、創建log4j.prope

使用LogKit進行日誌操作

cep 不同 mysq ext ron java localhost 使用 imp 1. 概述不論什麽一個系統中,日誌都是必不可少的。如今Apache提供了兩套日誌工具,一個就是Log4j。還有一個是本文要給出樣例的LogKit。Log4j和LogKit有非常

Linux筆記(十四) - 日誌管理

關機 ron pri 內核 有用 規則 rsyslog 所有者 事件 (1)rsyslogd的服務:查看服務是否啟動:ps aux | grep rsyslogd 查看服務是否自啟動:chkconfig --list | grep rsyslog 配置文件 : /etc/r