docker のコンテナ環境からのログ出力を

 

ホスト環境の journald に送るためには

 

コンテナの起動時にログドライバを指定する必要がある。

 

docker run --log-driver=journald puipu

 

一般的には、stdout/stderr への出力は

 

システムプロセス以外ではロギングされない

 

とされているのだが、なぜかロギングされる。

 

 

ただし、なぜかシングルスレッドは出力されるのだけれど

 

マルチスレッド部分で出力するとロギングされない。

 

 

さらに、

 

docker run --log-driver=journald -it puipui /bin/bash

 

とかすると、メッセージはポインタとサイズの報告に化ける。

 

 

 

さらにさらに、、、

 

ログドライバを指定しても syslog 関数の出力はホストには

 

届かない。

 

 

syslog関数の出力は UNIXドメインソケットに出力されるため、

 

コンテナの該当ソケットをホストのそれにマウントする必要がある。

 

 

もしログをsyslog関数で出力しているのならログドライバは不要。

 

コンテナ起動時のマウントコマンドだけでよい。

 

docker run -v=/dev/log:/dev/log puipui