一、背景介绍

       我们知道,Docker 容器的日志是需要打印到控制台上才能被有效采集的,至少这是官方的日志输出方案。

       实际工作中,常用命令 docker logs 打印出的也正是 Docker 容器在控制台上输出的信息。

       但现实环境下,大多数应用都会把日志输入到文件中,这给应用的容器化带来了一些困扰。

       要实现日志打印到控制台,是修改 log 配置,还是专门运行一个程序输出日志(如 tail -f xxx.log)?

       这些都不太优雅,笔者偶然在一本书中看到了一种通过软链接对文件日志进行重定向的方法,遂记录下来。

二、通过软链接重定向日志到控制台

       假设我们的日志文件位于:/var/log/demo_access.log、/var/log/demo_server.log、/var/log/demo_error.log

       我们可以通过执行如下命令将其重定向到控制台:

# ln -sfT /dev/stdout "/var/log/demo_access.log"
# ln -sfT /dev/stdout "/var/log/demo_server.log"
# ln -sfT /dev/stderr "/var/log/demo_error.log"

         其中参数意义:

         -s, --symbolic              make symbolic links instead of hard links

         -f, --force            强行删除任何已存在的目标文件

          -T, --no-target-directory   treat LINK_NAME as a normal file always

         这些命令甚至可以直接在 Dockerfile 内预置,容器构建好运行时就能顺利将日志打印到控制台了!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐