我必须将遗留应用程序放入Docker容器中。该应用程序运行正常,但我无法显示所有日志文件。问题是应用程序在启动可执行文件后创建了几个日志文件(例如service.log, license.log, security.log
等)。
我有一个启动脚本(让我们称之为start.sh
),它准备了一些东西(链接,配置),然后启动创建上述日志文件的应用程序。
经过一些谷歌搜索后,我找到similar problem并尝试应用使用命名管道的解决方案(创建/proc/1/fd/1
的链接无效)。所以我将以下内容放在起始脚本中:
mkfifo /path/to/app/license.log && tail -f /path/to/app/license.log &
mkfifo /path/to/app/security.log && tail -f /path/to/app/security.log &
...
但问题是只有FIRST文件会被重定向到docker logs
。其他根本不可见。
奇怪的是,在start.sh
中我有一行source before_start.sh
,它根据环境执行一些特定的命令。将mkfifo license.log
放置在start.sh
和mkfifo service.log
before_start.sh
中。
问题是我有更多文件,不想source
所有文件。
有没有人知道如何解决这个问题?
答案 0 :(得分:1)
因为它是遗留应用程序,所以我们仍然需要有日志文件。在这种情况下,适合我的解决方案是按touch
创建文件并使用tail读取它们:
touch /path/to/app/logfile.log && tail -f /path/to/app/logfile.log &
所以用mkfifo
替换touch
解决了我的问题。