2017-02-22 10 views
0

私は隔離されたマシン上にアプリケーションを持っています。たとえば、/var/log/app/log.txtにログを書き込みます。しかし、ジャーナルデーモンにログを書きたいと思っています。しかし、カプセル化されているため、アプリケーションの実行方法を変更することはできません。ファイルからジャーナルへのログの転送

は、私はすべてのサービスがjournaldするにsystemd書き込みログを始めてる権利ことapp | systemd-cat

1)のようになめらかに行うことはできません意味ですか?

2)もしそうなら、systemdによって開始されたプロセスの子プロセスも、journaldにログを書き込むでしょうか?

3)特定のファイルからログを取るようにjournaldに指示する方法はありますか?

4)そうでない場合は、回避策がありますか?

+0

最初の2つの質問の回答を見つけました 1)はい 2)はい –

答えて

0

警告:これはあなたがExecStartPre

例では、ファイルを記録するためにバインド/dev/stdoutをマウントすることができ

をテストされていません。ExecStartPre

にファイルをログに記録する

ExecStartPre=/use/sbin/mount --bind /dev/stdout  /var/log/app/log.txt 

またはソフトリンク/dev/stdout

例:

ExecStartPre=/use/bin/ln -s /dev/stdout  /var/log/app/log.txt 
0

4)私が唯一の回避策を支援しようとすることができます:これは、あなたが今のタイミングについて基本的な考え方を考えなければならないさ

MY_LOG_FILE=/var/log/app/log.txt 

# Create a FIFO PIPE 
PIPE=/tmp/my_fifo_pipe 
mkfifo $PIPE 
MY_IDENTIFIER="my_app_name"  # just a label for later searching in journalctl 

# Start logging to journal 
systemd-cat -t $MY_IDENTIFIER -p info < $PIPE & 
exec 3>$PIPE 

tail -f $MY_LOG_FILE > $PIPE & 

exec 3>&- #closing file descriptor 3 closes the fifo 

、これを持っている必要だときであることを開始し、停止。

関連する問題