logrotate Chinese

'logger rotate' 與輪替


Asterisk logs 檔 (一般位於 /var/log/asterisk) 需注意,它們會越來越大。

你可以從 asterisk 指令列做 "logger rotate" 或

/usr/sbin/asterisk -rx 'logger rotate'

從 bash 環境裡執行上面這行指令...你可以把它加入排程內(cron job)讓它自動執行。

logrotate

若你的系統有使用 logrotate 這樣的工具,你可以不必另外寫腳本(script)來做,你仍可以很好的控制你的log檔案。

底下是我系統上的範例 /etc/logrotate.d/asterisk

/var/log/asterisk/messages /var/log/asterisk/*log {
missingok
rotate 5
weekly
create 0640 asterisk asterisk
postrotate
/usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null
endscript
}

此設定會每週輪替(rotate)這些檔案5次,訊息會是,最新的log檔名為 messages.1, messages.2 直到 messages.5 (最舊的log檔). 若你執行 asterisk 時的身份:群組不是 asterisk:asterisk, 你可以刪去這行 create 0640 asterisk asterisk

若你只是要保留 cdr 記錄為 csv 檔的話,用它來檢查 VOIP 提供者的收費, (精確度不在考量範圍內) 你可使用這個 logrotate 腳本(script)一個月輪替它們一次。

/var/log/asterisk/cdr-csv/*csv {
missingok
rotate 5
monthly
create 0640 asterisk asterisk
}

logrotate for Debian / Ubuntu

你仍需要 asterisk 的這個指令 'logger reload' 在你搬移 log 檔之後,否則它會繼續寫入舊檔案裡。

目前 Debian 裡此檔 /etc/logrotate.d/asterisk 的預設值是:

/var/log/asterisk/cdr-csv/Master.csv /var/log/asterisk/debug /var/log/asterisk/event_log /var/log/asterisk/messages {
weekly
missingok
rotate 4
sharedscripts
postrotate
/usr/sbin/invoke-rc.d asterisk logger-reload
endscript
}

若你是使用 copytruncate 選項,你不需要 'logger reload' 這個指令。範例請參照底下的這個 logrotate 腳本檔中:

當它還沒長大的足夠的大小,不用去輪替(logrotate) log 檔。 看底下的腳本當中,我們所使用的這個 copytruncate 選項來控制這個功能。只有檔案大於 2000k (2meg) 才會被輪替。

自訂 Debian / Ubuntu /etc/logrotate.d/asterisk

/var/log/asterisk/cdr-csv/Master.csv /var/log/asterisk/debug /var/log/asterisk/event_log /var/log/asterisk/messages {
weekly
missingok
rotate 9
size 2000k
copytruncate
endscript
}

See also



Go back to Asterisk

'logger rotate' 與輪替


Asterisk logs 檔 (一般位於 /var/log/asterisk) 需注意,它們會越來越大。

你可以從 asterisk 指令列做 "logger rotate" 或

/usr/sbin/asterisk -rx 'logger rotate'

從 bash 環境裡執行上面這行指令...你可以把它加入排程內(cron job)讓它自動執行。

logrotate

若你的系統有使用 logrotate 這樣的工具,你可以不必另外寫腳本(script)來做,你仍可以很好的控制你的log檔案。

底下是我系統上的範例 /etc/logrotate.d/asterisk

/var/log/asterisk/messages /var/log/asterisk/*log {
missingok
rotate 5
weekly
create 0640 asterisk asterisk
postrotate
/usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null
endscript
}

此設定會每週輪替(rotate)這些檔案5次,訊息會是,最新的log檔名為 messages.1, messages.2 直到 messages.5 (最舊的log檔). 若你執行 asterisk 時的身份:群組不是 asterisk:asterisk, 你可以刪去這行 create 0640 asterisk asterisk

若你只是要保留 cdr 記錄為 csv 檔的話,用它來檢查 VOIP 提供者的收費, (精確度不在考量範圍內) 你可使用這個 logrotate 腳本(script)一個月輪替它們一次。

/var/log/asterisk/cdr-csv/*csv {
missingok
rotate 5
monthly
create 0640 asterisk asterisk
}

logrotate for Debian / Ubuntu

你仍需要 asterisk 的這個指令 'logger reload' 在你搬移 log 檔之後,否則它會繼續寫入舊檔案裡。

目前 Debian 裡此檔 /etc/logrotate.d/asterisk 的預設值是:

/var/log/asterisk/cdr-csv/Master.csv /var/log/asterisk/debug /var/log/asterisk/event_log /var/log/asterisk/messages {
weekly
missingok
rotate 4
sharedscripts
postrotate
/usr/sbin/invoke-rc.d asterisk logger-reload
endscript
}

若你是使用 copytruncate 選項,你不需要 'logger reload' 這個指令。範例請參照底下的這個 logrotate 腳本檔中:

當它還沒長大的足夠的大小,不用去輪替(logrotate) log 檔。 看底下的腳本當中,我們所使用的這個 copytruncate 選項來控制這個功能。只有檔案大於 2000k (2meg) 才會被輪替。

自訂 Debian / Ubuntu /etc/logrotate.d/asterisk

/var/log/asterisk/cdr-csv/Master.csv /var/log/asterisk/debug /var/log/asterisk/event_log /var/log/asterisk/messages {
weekly
missingok
rotate 9
size 2000k
copytruncate
endscript
}

See also



Go back to Asterisk

Created by: dominic16y, Last modification: Mon 04 of Jun, 2012 (12:48 UTC)
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+