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 に記録するようにしました。
もしかしたから何か上手いやり方があるのかもしれませんが・・・。