プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2021/06/15

[python] ログを syslog に出力する

update2022/09/28 event_note2021/06/15 9:11

python でログをファイルに出力する記事を書きましたが、Linux には syslog があるので、アプリケーションのログも syslog に出力してみます。

ちなみに前回の記事はこちらです。

環境

  • Ubuntu 20.04
  • python 3.8.5

とりあえず簡単にやりたいなら

以下で OK です。

import syslog
syslog.syslog("This is a test message")
syslog.syslog(syslog.LOG_INFO, "Test message at INFO priority")

しかし、これだと syslog 固定なので、ログの出力先を変更したい場合に大変です。
なので、logger を使って抽象化したほうが良いと思います。

logger の出力先を syslog にする

from logging import handlers, basicConfig, getLogger, DEBUG

basicConfig(level=DEBUG, handlers=[handlers.SysLogHandler(address='/dev/log')])
#basicConfig(level=DEBUG, handlers=[handlers.SysLogHandler(address=("127.0.0.1",514))])

logger = getLogger('MyLogger')

logger.info('this is info')
logger.debug('this is debug')
logger.critical('this is critical')

標準出力にも出力したい

handlersStreamHandler を追加すれば OK です。

basicConfig(level=DEBUG, handlers=[StreamHandler(), handlers.SysLogHandler(address = '/dev/log')])
#basicConfig(level=DEBUG, handlers=[StreamHandler(), handlers.SysLogHandler(address=("127.0.0.1",514))])

logger = getLogger('MyLogger')

logger.info('this is info')
logger.debug('this is debug')
logger.critical('this is critical')

Docker コンテナ内のアプリのログをホストの syslog に追加する

以下の記事で書いています。