【问题标题】:All combined docker logs with container name所有带有容器名称的组合 docker 日志
【发布时间】:2020-12-02 13:03:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    docker logs 需要一个命令,因此您必须为每个容器运行它们。我想我可以做点什么:

    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 或其他日志记录解决方案,并使用该实用程序来聚合和过滤日志。

    【讨论】:

      【解决方案2】:

      知道了。

      因为我在docker ps -a -q --format "table {{.ID}}";做 { docker ps -a -q --format "table {{.ID}}\t{{.Names}}\n" | grep "$i" & docker logs --timestamps --tail 1 "$i"; } >> 日志.log;完成

      logs.log 是一个通用文件名。

      【讨论】:

        猜你喜欢
        • 2021-12-29
        • 2021-11-30
        • 1970-01-01
        • 1970-01-01
        • 2019-03-25
        • 2016-01-20
        • 1970-01-01
        • 2021-01-08
        • 1970-01-01
        相关资源
        最近更新 更多