所有合并的带有容器名称的docker日志

时间:2020-08-12 18:01:54

标签: linux docker docker-compose docker-machine docker-logs

因此,我尝试在日志文件中获取所有容器日志及其容器名称的组合输出 docker日志--tail -3 容器名称 >> logst.log文件。

2 个答案:

答案 0 :(得分:0)

docker日志仅需一个命令,因此您必须为每个容器运行它们。我想我可以做一些事情:

docker ps --format='{{.Names}}' | xargs -P0 -d '\n' -n1 sh -c 'docker logs "$1" | sed "s/^/$1: /"' _
  • docker ps --format='{{.Names}}'-打印容器名称
  • xargs-用于输入
    • -d '\n'-每行
    • -P0-与任意数量的并行作业并行执行
      • 如果您不想执行docker logs --follow
      • ,请删除此选项
      • 这可能会导致问题,请考虑添加stdbuf -oLsed -u来取消缓冲流
    • -n1-将一个参数传递给底层处理
    • sh -c 'script' _-为每行执行脚本,并将行作为第一个位置参数传递
      • docker logs "$1"-获取日志
      • sed 's/^/$1: /'-在每个日志行之前添加docker名称的名称

但是,一种更好的工业级解决方案是将docker日志转发到journalctl或其他日志记录解决方案,并使用该实用程序来聚合和过滤日志。

答案 1 :(得分:0)

知道了。

docker ps -a -q --format "table {{.ID}}"中为我

;做{docker ps -a -q --format“表{{.ID}} \ t {{。Names}} \ n” | grep“ $ i”和docker日志--timestamps --tail 1“ $ i”; } >> logs.log;完成

logs.log是通用文件名。