2016-05-17 3 views
0

Dockerコンテナにレガシーアプリケーションを置く必要があります。アプリは正常に動作していますが、すべてのログファイルを表示することはできません。問題は、アプリケーションが実行可能ファイルを開始した後に複数のログファイル(たとえばservice.log, license.log, security.logなど)を作成していることです。dockerコンテナの複数のログファイルをstdout(レガシーアプリケーション)にリダイレクト

私はいくつかのもの(リンク、設定)を準備し、上記のログファイルを作成するアプリケーションを起動する開始スクリプト(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という行があります。 をstart.shに、mkfifo service.logbefore_start.shに配置してください。 問題は、私はより多くのファイルを持っており、それらのすべてをsourceにしたくないということです。

誰もがこれを解決する方法のアイデアを持っていますか?

答えて

0

レガシーアプリケーションであるため、ログファイルを用意する必要があります。その場合、私の作品解決策をtouchでファイルを作成し、尾を使用してそれらを読むことです:

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

のでtouchmkfifoを交換私の問題を解決しました。

関連する問題