我在隔离的机器上有一个应用程序。例如,它将日志写入/var/log/app/log.txt。但是,我希望它将日志写入journald守护程序。但是,我无法改变应用程序运行的方式,因为它是封装的。
我的意思是我不能像app | systemd-cat
1)我是否认为所有服务都是以systemd写日志开始写入日记?
2)如果是这样,由systemd启动的进程子进程是否也会将日志写入journald?
3)有没有办法告诉记者从特定文件中获取日志?
4)如果没有,是否有任何解决方法?
答案 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
这是基本的想法,你现在应该考虑时间,何时需要开始这个时间以及什么时候停止。