[Docker] ログドライバーでログの出力先を syslog に設定する

Docker コンテナで標準出力されているログを syslog に記録するようにログドライバーを設定します。

Docker のログドライバーで設定できるものには他にもいろいろあります。

オプションはログドライバーによって異なるようで、syslog の場合は以下になります。

以上を踏まえ、docker-compose でログドライバーを設定する例が以下になります。

logging:
  driver: syslog
  options:
    tag: 'my-app-name'

デフォルトでは appname がコンテナIDになって分かりづらいので、tag で設定しています。

余談

コンテナ内で動かしている Python のアプリケーションでは、もともと logging モジュールで syslog に記録するよう設定していました。
これを標準出力にし、Docker のログドライバーで設定できるようにすれば、コンテナを使う側が出力先を決められて便利かなと思いました。

しかし、Python 側では5段階に分けられていたログレベルが、標準出力を介すことで、Info (stdout) と Error (stderr) の2レベルに平坦化されてしまうことが分かり、結局 Python 側で syslog に記録するようにしました。

もしかしたから何か上手いやり方があるのかもしれませんが・・・。

参考 URL

Hugo で構築されています。
テーマ StackJimmy によって設計されています。