普通は docker-compose logs
コマンドで確認出来るが、
いまいち気持ちが悪いので syslog
経由でログファイルを吐くように設定した。
大規模構成だと fluentd
とかつかって集約したり、いろいろ頑張らないと厳しそう。
syslogにログ出力する設定
{{.Name}}
などでコンテナ名などを埋め込むことができる
# /etc/sysconfig/docker OPTIONS="--default-ulimit nofile=1024:4096 --log-driver=syslog --log-opt syslog-facility=daemon --log-opt tag=docker/{{.Name}}/{{.ID}}"
service docker restart
こんなのが出力される
Apr 26 14:26:15 localhost docker/mastodon_web_1/a6b7b36e7e33[5981]: => message for you
rsyslog 側でタグの内容ごとにログファイルを分ける設定
# /etc/rsyslog.d/10-docker.conf $template DockerLogs, "/var/log/docker_%syslogtag:R,ERE,1,FIELD:docker/(.+)/--end%.log" if $syslogfacility-text == 'daemon' and $programname contains 'docker' then -?DockerLogs & stop
service rsyslog restart
こんなログファイルが作成される
less /var/log/docker_mastodon_web_1.log
参考: Logging Docker container output to individual files via Syslog