差分

移動先: 案内検索

Asterisk ログファイル

3,000 バイト追加, 2020年8月23日 (日) 14:24
編集の要約なし
Asteriskのログファイルについて
==ログファイル==
デフォルトの設定ではmessagesログとして、noticeデフォルトの設定では/var/log/asterisk/messagesに、ログレベルnotice, warning, errorが出力されます。<br>
ログファイルの設定は/etc/asterisk/logger.confで行います。
<nowiki># ; /etc/asterisk/logger.conf
[logfiles]
messages => notice,warning,error</nowiki>
また、ログレベルの前に[json]を付与するとJSON出力が可能です。
<nowiki>; /etc/asterisk/logger.conf[logfiles]full-json => [json]debug,verbose,notice,warning,error,dtmf,fax</nowiki>
'''警告:debugログレベル及びこれを含む*ログレベルを使用すると、極めて多量のログが出力されます。運用モードではdebugログを出力しないことを強く勧めます!'''<br>
==自動でログをローテートする==
まず、ログのローテートそのものは、Asteriskには、内蔵のログローテート機構があります。<br>===ローテートの仕方の設定===ログのローテートのファイル名の付け方をlogger.confの[general]セクションで設定できます。<br> <nowiki>; /etc/asterisk/logger.conf[general]rotatestrategy=sequential</nowiki> ; none: 全くローテートを行いません。; sequential(デフォルト): ローテートするたびに、最も新しいログファイルのファイル名の通し番号が最も大きくなるように変名します。; rotate: ローテートするたびに、過去のログファイルのファイル名の通し番号を1ずつ増やし、最も新しいログファイルの末尾の数字を0とします。; timestamp: 通し番号の代わりにタイムスタンプを使用します。 sequentialとrotateの違いが分かりにくいですが、例えば「messages」ログファイルを今、ローテートするとして、既にmessages.0 messages.1 messages.2がある場合、; sequential: ローテートすると、messagesはmessages.3に変名されます。0~2はそのままです。; rotate: ローテートすると、messages.2はmessages.3に、messages.1がmessages.2に、messages.0がmessages.1に変名され、messagesはmessage.0に変名されます。その後、新しいmessagesが作られ、ローテート後はこの新しいmessagesに書き込まれます。 ===古いファイルを自動で消す===varパーティションが溢れないようにするためには、古いファイルを自動で消す必要があります。<BR>古いログファイルを4世代保持しておき、古いファイルから消していくためには、[general]セクションで次のように設定します。<BR>  <nowiki>; /etc/asterisk/logger.conf[general]rotatestrategy=rotateexec_after_rotate=rm -f $["${filename}" : "(.+)\.0$"].4</nowiki> 設定ファイルを変更したら、[[Asterisk CLI]]でlogger reloadを行うと変更が反映されます。 : 解説:上記の設定ファイルではAsterisk expressionsの記法が使用されています。${filename}は、rotatestrategy=rotateにおいては「/var/log/asterisk/messages.0」のような文字列になります。: これに正規表現 "(.+)\.0$" をマッチ(:演算子は正規表現をマッチさせる演算子ですが、暗黙の「^」により文字列の先頭にマッチされます)させ、Asterisk expressionsの正規表現は他の多数の言語でいう$1を返す仕様のため、: これに".4"を付与したものを削除することで、最も古いログファイルを削除します。: 詳細は[[Asterisk expressions]]を参照してください。 ===ローテートの実行=== ログのローテートそのものは、[[Asterisk CLI]]でlogger rotateを行うと実行されます。<br>
systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。そこで、systemdの下で定期的にログローテートを行うためのユニットファイルの一例を示します。
<nowiki># /etc/systemd/system/asterisk-logrotate.service
[Unit]
[Service]
Type=simple
# root以外のユーザーでAsteriskを実行している場合は下2行でAsteriskの実行ユーザーに合わせてください
#User=asterisk
#Group=asterisk

案内メニュー

VoIp-Info.jp

HP Directplus -HP公式オンラインストア-