apache日誌分割

2021-08-07 22:21:18 字數 3424 閱讀 7792

一、日誌切割

安裝cronolog

centos 5.4中編譯安裝apache預設日誌是不切割的,需要用用工具cronnolog進行日誌切割

wget

tar zxvf cronolog-1.6.2.tar.gz

cd cronolog-1.6.2

./configure

make &&  make install

2.用which命令檢視路徑驗證安裝

which cronolog

預設路徑為:/usr/local/sbin/cronolog

3.配置

customlog 「|/usr/local/sbin/cronolog /usr/local/apache/logs/access_%y%m%d.log」 combined   定義訪問日誌

errorlog 「|/usr/local/sbin/cronolog /home/www/ex/log/error_%y%m%d.log」                    定義錯誤日誌

二、還有另外一種使用rotatelogs 方法:

linux系統配置方法:

將其改為

安裝了apache就會有rotatelogs的。

windows系統下配置方法:

#errorlog "|bin/rotatelogs.exe logs/error-%y%m%d.log 86400 480"

#customlog "|bin/rotatelogs.exe logs/access-%y%m%d.log 86400 480" common

二、apache日誌切割

輯apache的主配置檔案,更改內容如下:

注釋掉如下兩行

errorlog logs/error_log

customlog logs/access_log common

然後新增如下兩行

errorlog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/errorlog.%y-%m-%d-%h_%m_%s 2m +480"

customlog "|/usr/local/apache/bin/rotatelogs /usr/local/apache/logs/accesslog.%y-%m-%d-%h_%m_%s 2m +480" common

意義如下:

errorlog.%y-%m-%d-%h_%m_%s為生成日誌的格式,類似於這樣:errorlog.2010-04-15-11_32_30 ,以年月日時分秒為單位的,

2m 為日誌的大小,即為日誌達到多大後生成新的日誌檔案,支援的單位為k,m,g,本處為2m

+480 為時差,檔案的時間為美國時間,中國的時差要比美國多8個小時也就是480分鐘,所以要加上480分鐘

還有其他的設定方法如下:

每天生成乙個錯誤日誌檔案

errorlog "|bin/rotatelogs.exe -l logs/error-%y-%m-%d.log 86400"

其中86400為輪轉的時間單位為秒

參考:參考:

rotatelogs - 滾動apache日誌的管道日誌程式

rotatelogs是乙個配合apache管道日誌功能使用的簡單程式。舉例:

customlog "|bin/rotatelogs /var/logs/logfile 86400" common

此配置會建立檔案"/var/logs/logfile.nnnn",其中的nnnn是名義上的日誌啟動時的系統時間(此時間總是滾動時間的倍數,可以用於cron指令碼的同步)。在滾動時間到達時(在此例中是24小時以後),會產生乙個新的日誌。

customlog "|bin/rotatelogs /var/logs/logfile 5m" common

此配置會在日誌檔案大小增長到5兆位元組時滾動該日誌。

errorlog "|bin/rotatelogs /var/logs/errorlog.%y-%m-%d-%h_%m_%s 5m"

此配置會在錯誤日誌大小增長到5兆位元組時滾動該日誌,日誌檔名字尾會按照如下格式建立:errorlog.yyyy-mm-dd-hh_mm_ss 。

語法rotatelogs [ -l ] logfile [ rotationtime [ offset ]] | [ filesizem ]

選項-l

使用本地時間代替gmt時間作為時間基準。注意:在乙個改變gmt偏移量(比如夏令時)的環境中使用-l會導致不可預料的結果。

logfile

它加上基準名就是日誌檔名。如果logfile中包含"%",則它會被視為用於strftime()的格式字串;否則它會被自動加上以秒為單位的".nnnnnnnnnn"字尾。這兩種格式都表示新的日誌開始使用的時間。

rotationtime

日誌檔案滾動的以秒為單位的間隔時間。

offset

相對於utc的時差的分鐘數。如果省略,則假定為"0"並使用utc時間。比如,要指定utc時差為"-5小時"的地區的當地時間,則此引數應為"-300"。

filesizem

指定以filesizem檔案大小滾動,而不是按照時間或時差滾動。

可移植性

下列日誌檔案格式字串可以為所有的strftime()實現所支援,見各種擴充套件庫對應的strftime()的手冊。

%a 星期名全稱(本地的) 

%a 3個字元的星期名(本地的) 

%b 月份名的全稱(本地的) 

%b 3個字元的月份名(本地的) 

%c 日期和時間(本地的) 

%d 2位數的乙個月中的日期數 

%h 2位數的小時數(24小時制) 

%i 2位數的小時數(12小時制) 

%j 3位數的一年中的日期數 

%m 2位數的分鐘數 

%m 2位數的月份數 

%p am/pm12小時制的上下午(本地的) 

%s 2位數的秒數 

%u 2位數的一年中的星期數(星期天為一周的第一天) 

%w 2位數的一年中的星期數(星期一為一周的第一天) 

%w 1位數的星期幾(星期天為一周的第一天) 

%x 時間(本地的) 

%x 日期(本地的) 

%y 4位數的年份 

%y 2位數的年份 

%z 時區名 

%% 符號"%"本身 

Apache日誌分割指令碼

產生背景 隨著公司的ntp中心伺服器訪問越來越大,access日誌也是日益增加,原有的日誌沒有進行切割,單個日誌文過大 最大的有3.7g 若清理磁碟空間會將訪問日誌整個刪除,這樣會丟失很多重要的資訊,因此對日誌進行切割是很有必要的,這樣若日後檔案過多,也可以刪除歷史檔案。指令碼 將指令碼加入到cro...

nginx日誌分割

以下這個指令碼實施的核心是 每天凌晨將日誌檔案壓縮並移動到相應的年份月份目錄下,然後重新生成日誌檔案,同時記錄日誌 bin bash logs path home wwwlog 日誌存放位置 year date y 年份 month date m 月份 day date y m d 日期 time ...

linux cronolog分割日誌

1 日誌分割設定 apache的日誌分割要借助於目前國際上最流行 最通用的日誌分割工具cronolog。日誌輪循工具cronolog,已經是比較的相當成熟,在不中斷apache伺服器的情況下,它能嚴格的按每一天00 00 00 23 59 59來實現日誌檔案的分割,同時不受apache伺服器重啟的影...