【发布时间】:2020-12-02 13:03:55
【问题描述】:
所以我试图在日志文件中获取所有容器日志的组合输出及其容器名称 docker logs --tail -3 带有 容器名称 >> logst.log 文件。
【问题讨论】:
标签: linux docker docker-compose docker-machine docker-logs
所以我试图在日志文件中获取所有容器日志的组合输出及其容器名称 docker logs --tail -3 带有 容器名称 >> logst.log 文件。
【问题讨论】:
标签: linux docker docker-compose docker-machine docker-logs
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 -oL 和sed -u 以取消缓冲流-n1 - 将一个参数传递给底层处理过程sh -c 'script' _ - 为每一行执行脚本,将行作为第一个位置参数传递
docker logs "$1" - 获取日志sed 's/^/$1: /' - 将 docker 名称添加到每个日志行但更好的工业级解决方案是将 docker 日志转发到 journalctl 或其他日志记录解决方案,并使用该实用程序来聚合和过滤日志。
【讨论】:
知道了。
因为我在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 是一个通用文件名。
【讨论】: