2017-02-22 96 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 

这是基本的想法,你应该现在想想计时,当需要这种耐心能有这个开始,什么时候是停止。