TreeviewCopyright © aleen42 all right reserved, powered by aleen42

日志导出

JSON

docker的log可以设定指定的输出方式,通常为了日志采集我们使用json文件方法是输出,这个是docker daemon的默认日志输出方式 首先设置/etc/docker/daemon.json

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m"
  }
}

参数解释: max-size:文件大小设定,设定上限 max-file:最大文件数

也可以单独覆盖设置

docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

Syslog

也可以通过syslog的方式统一采集 先启动一个syslog

docker run -d -v /tmp:/var/log/syslog -p 127.0.0.1:5514:514/udp  --name rsyslog voxxit/rsyslog

然后启动业务容器

docker run --log-driver=syslog --log-opt syslog-address=udp://127.0.0.1:5514 --log-opt syslog-facility=daemon 
 --log-opt syslog-tag=app01 --name logging-02 -ti -d -v $(pwd):/tmp  -w /tmp python:2.7 python -u logging-01.py

syslog-tag:设定来自这个container的日志的标识 syslog-address:设定syslog的地址 此时业务容器直接输出通过docker logs的方式是不能输出日志的"logs" command is supported only for "json-file" logging driver 测试一下:

docker exec  rsyslog tail -f /var/log/messages

注:python脚本如下

import sys  
import time  
 while True:  
   sys.stderr.write('Error\n')  
   sys.stdout.write('All Good\n')  
   time.sleep(1)

results matching ""

    No results matching ""