2016-05-17 69 views
0

我必须将遗留应用程序放入Docker容器中。该应用运行良好,但我无法显示所有日志文件。问题在于该应用程序在启动可执行文件后创建了多个日志文件(例如service.log, license.log, security.log等)。将docker容器中的几个日志文件重定向到标准输出(遗留应用程序)

我有一个开始脚本(我们称之为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 & 
... 

但问题是,只有第一个文件将被重定向到docker logs。其他人根本看不到。

好奇的是,在start.sh我有一行source before_start.sh,它根据环境执行一些特定的命令。将mkfifo license.log置于start.shmkfifo service.logbefore_start.sh工作。 问题是我有更多的文件,并不想source所有这些。

有没有人有一个想法如何解决这个问题?

回答

0

因为它是一个遗留应用程序,我们仍然必须有日志文件。在这种情况下,对我的作品的解决方案是通过touch创建文件,并使用尾巴阅读:

touch /path/to/app/logfile.log && tail -f /path/to/app/logfile.log & 

因此,与touch更换mkfifo解决我的问题。

相关问题