歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 基於Rotated Log的日志統計

基於Rotated Log的日志統計

日期:2017/3/3 14:06:19   编辑:Linux技術

Rotated

Log 簡介

Rotated

log是linux支持日志文件自動轉儲和重命名的機制。當需要限制每個日志文件大小,或者需要周期地統計並記錄日志的時候,就是rotated

log機制大顯身手的好時機。

Rotated

Log的使用和配置

Rotated

log的配置文件都是在/etc/logrotate.d裡面,它本身依賴於logrotate命令的執行。logrotate自身作為一個日常的cron

job,正常情況下它一天只會執行一次,通過下面的命令可以看到它是如何作為一個cron

job的:

[root@localhost

cron.daily]# pwd

/etc/cron.daily

[root@localhost

cron.daily]# cat 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

除非rotate是根據日志文件大小進行,或者強制執行轉儲命令logrotate -f。配置文件裡指定了需要rotate的日志文件的名字,以及rotate觸發的機制、處理的策略,以/etc/logrotate.d/syslogd為例:

[root@localhost

logrotate.d]# cat syslog

/var/log/cron

/var/log/maillog

/var/log/messages

/var/log/secure

/var/log/spooler

{

sharedscripts

postrotate

/bin/kill

-HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null ||

true

endscript

}

從第一到第五行指定了有待rotate的日志文件的名字,這裡列出了五個日志文件需要保存。sharedscripts表示postrotate腳本命令/bin/kill

-HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null ||

true只會執行一次,而不是在每個上述的日志文件rotate之後都執行一次。

Rotated

Log相關的程序設計

根據本人最近使用logrotate的經驗和教訓,重點需要考慮和引起注意的要素有:

1.考慮到保證每一條記錄的完整性,建議根據時間而非容量進行自動回轉。

2.考慮到查詢的方便和log

rotated的命名規則,需要設計好合適的數據結構來統計每一個日志文件的記錄。還是以上面的mailog日志文件為例,如果某個時刻系統只有一個mailog,第一次rotate之後之前的mailog會重新命名為mailog.1,而mailog裡面的內容會被清空;第二次rotate之後,之前的maillog.1會被重命名為mailog.2,而之前的maillog會重新命名為mailog.1,而mailog裡面的內容會被情況,後續的rotate以此類推。因此,需要一個設計良好的數據結構和方法來表示文件名稱和真實文件。

3.如果存在多個用戶同時訪問日志文件的情況,為了保證日志總數和記錄的完整和一致,需要在訪問文件前加鎖。

4.進階:Rotated

log本身和其他模塊和代碼沒有聯系,其他應用往往需要從rotated

log裡存取數據,為此可以開發出和具體業務無關的且便於擴展的rotated

log API,以靜態庫或者動態庫的形式支持二次開發。

本文出自 “存儲之廚” 博客,請務必保留此出處http://xiamachao.blog.51cto.com/10580956/1769244

Copyright © Linux教程網 All Rights Reserved