2017-02-22 56 views
0

我在隔離的機器上有應用程序。例如,它將日誌寫入/var/log/app/log.txt。但是,我希望它將日誌寫入到journald守護進程。但是,我無法改變應用程序的運行方式,因爲它是封裝的。將日誌從文件轉發到日記

我的意思是我無法做到像水木清華app | systemd-cat

1)我說得對,所有的服務開始systemd日誌寫入journald?

2)如果是這樣,那麼由systemd啓動的進程的子進程也會將日誌寫入到journald中嗎?

3)有什麼辦法告訴journald從特定文件中取日誌嗎?

4)如果沒有,是否有任何解決方法?

+0

好的,我已經找到了前兩個問題的答案 1)是 2)是 –

回答

0

警告:這不是測試

你可以安裝綁定/dev/stdout日誌文件中ExecStartPre

例子:

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

或者軟鏈接/dev/stdout日誌文件中ExecStartPre

例如:
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 

這是基本的想法,你應該現在想想計時,當需要這種耐心能有這個開始,什麼時候是停止。