将日志从文件转发到日志

时间:2017-02-22 12:19:47

标签: unix logging centos systemd

我在隔离的机器上有一个应用程序。例如,它将日志写入/var/log/app/log.txt。但是,我希望它将日志写入journald守护程序。但是,我无法改变应用程序运行的方式,因为它是封装的。

我的意思是我不能像app | systemd-cat

那样做

1)我是否认为所有服务都是以systemd写日志开始写入日记?

2)如果是这样,由systemd启动的进程子进程是否也会将日志写入journald?

3)有没有办法告诉记者从特定文件中获取日志?

4)如果没有,是否有任何解决方法?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

这是基本的想法,你现在应该考虑时间,何时需要开始这个时间以及什么时候停止。