【问题标题】:Forwarding logs from file to journald将日志从文件转发到日志
【发布时间】:2017-02-22 12:19:46
【问题描述】:

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

我的意思是我不能像app | systemd-cat那样做事

1)我说的所有服务都以 systemd 将日志写入 journald 是对的吗?

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

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

4)如果没有,有什么解决方法吗?

【问题讨论】:

  • 好的,我已经找到了前两个问题的答案 1) 是 2) 是

标签: unix logging centos systemd


【解决方案1】:

警告:这未经测试

您可以将绑定/dev/stdout 挂载到ExecStartPre 中的日志文件

例子:

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

或软链接/dev/stdoutExecStartPre中的日志文件

例子:

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

【讨论】:

    【解决方案2】:

    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
    

    这是基本概念,您现在应该考虑时间安排,何时需要启动以及何时停止。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 2017-01-28
      相关资源
      最近更新 更多