Asteriskはログ機能があるけど、ほっておくとどんどんファイルサイズが大きくなるし可読性も悪くなる。ログを管理するにあたってよく使いそうな機能のメモ。設定内容は/etc/asterisk/logger.confを参照。
・ログの内容やファイル名を切り替える
[logfiles]セクションに、ログに記録する情報を選択するための設定がある。デフォルトだと、コンソールにはnotice,warning,errorを表示するとともに、その情報を/var/log/asterisk/messagesにも保存するはず。もっと冗長な情報を保存したい場合は、
messages => notice,warning, error,verbose(5)
などとすればよい。違うファイルに特定の情報だけを保存したい場合は、
verbose => verbose(3)
等とすれば、/var/log/asterisk/verbose に指定したレベルの情報が記録される。
・ログのファイル名とRotate
[general]セクションに、rotatestrategyという設定がある。コンソールでlogger rotateと入力すると新しいログファイルが作られるが、その際のリネーム規則をそこで変えられる。
・Cronを使って一定時間以上古いログを消す
crontabで以下のシェルを毎日実行すれば、1週間以上古いログは勝手に消えていくはず。
/home/test.sh:
#!/bin/sh
sudo asterisk -rx “logger rotate”
find /var/log/asterisk -type f -mtime +7 | sudo xargs rm -f
crontab -e:
10 2 * * * /home/test.sh >/dev/null 2>&1
ちなみにCronでsudoを使う場合には、上記コマンドをシェルに記載して、/etc/sudoersの”Defaults requiretty”の下あたりに、以下を記載すればよい。
Defaults requiretty
Defaults:username !requiretty
username ALL=(root) NOPASSWD:/home/test.sh