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')
標準出力にも出力したい
handlers
に StreamHandler
を追加すれば 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 に追加する
以下の記事で書いています。