36.15. syslog --- Unix syslog ライブラリルーチン群¶
このモジュールでは Unix syslog ライブラリルーチン群へのインタフェースを提供します。syslog の便宜レベルに関する詳細な記述は Unix マニュアルページを参照してください。
このモジュールはシステムの syslog ファミリのルーチンをラップしています。 syslog サーバーと通信できる pure Python のライブラリが、 logging.handlers モジュールの SysLogHandler にあります。
このモジュールでは以下の関数を定義しています:
-
syslog.syslog(message)¶ -
syslog.syslog(priority, message) 文字列 message をシステムログ機構に送信します。末尾の改行文字は必要に応じて追加されます。各メッセージは facility および level からなる優先度でタグ付けされます。オプションの priority 引数はメッセージの優先度を定義します。標準の値は
LOG_INFOです。 priority 中に、便宜レベルが (LOG_INFO | LOG_USERのように) 論理和を使ってコード化されていない場合、openlog()を呼び出した際の値が使われます。syslog()が呼び出される前にopenlog()が呼び出されなかった場合、openlog()が引数なしで呼び出されます。
-
syslog.openlog([ident[, logoption[, facility]]])¶ openlog()関数を呼び出すことで以降のsyslog()の呼び出しに対するログオプションを設定することができます。ログがまだ開かれていない状態でsyslog()を呼び出すとopenlog()が引数なしで呼び出されます。オプションの ident キーワード引数は全てのメッセージの先頭に付く文字列で、デフォルトでは
sys.argv[0]から前方のパス部分を取り除いたものです。オプションの logoption キーワード引数 (デフォルトは 0) はビットフィールドです。組み合わせられる値については下記を参照してください。オプションの facility キーワード引数 (デフォルトはLOG_USER) は明示的に facility が encode されていないメッセージに設定される facility です。
-
syslog.closelog()¶ syslog モジュールの値をリセットし、システムライブラリの
closelog()を呼び出します。この関数を呼ぶと、モジュールが最初に import されたときと同じようにふるまいます。例えば、(
openlog()を呼び出さないで)syslog()を最初に呼び出したときに、openlog()が呼び出され、 ident やその他のopenlog()の引数はデフォルト値にリセットされます。
-
syslog.setlogmask(maskpri)¶ 優先度マスクを maskpri に設定し、以前のマスク値を返します。 maskpri に設定されていない優先度レベルを持った
syslog()の呼び出しは無視されます。標準では全ての優先度をログ出力します。関数LOG_MASK(pri)は個々の優先度 pri に対する優先度マスクを計算します。関数LOG_UPTO(pri)は優先度 pri までの全ての優先度を含むようなマスクを計算します。
このモジュールでは以下の定数を定義しています:
- 優先度 (降順):
LOG_EMERG、LOG_ALERT、LOG_CRIT、LOG_ERR、LOG_WARNING、LOG_NOTICE、LOG_INFO、LOG_DEBUG。- 機能:
LOG_KERN,LOG_USER,LOG_MAIL,LOG_DAEMON,LOG_AUTH,LOG_LPR,LOG_NEWS,LOG_UUCP,LOG_CRON,LOG_SYSLOGおよび、LOG_LOCAL0からLOG_LOCAL7。- ログオプション:
<syslog.h>で定義されている場合、LOG_PID、LOG_CONS、LOG_NDELAY、LOG_NOWAIT、およびLOG_PERROR。
36.15.1. 例¶
36.15.1.1. シンプルな例¶
1つ目のシンプルな例:
import syslog
syslog.syslog('Processing started')
if error:
syslog.syslog(syslog.LOG_ERR, 'Processing started')
いくつかのログオプションを設定する例。ログメッセージにプロセスIDを含み、メッセージをメールのログ用の facility にメッセージを書きます:
syslog.openlog(logoption=syslog.LOG_PID, facility=syslog.LOG_MAIL)
syslog.syslog('E-mail processing initiated...')
