【问题标题】:Newlines get stripped in syslog-ng换行符在 syslog-ng 中被剥离
【发布时间】:2012-11-22 00:05:06
【问题描述】:

我们在负载平衡的服务器上使用 syslog-ng 实现了集中式日志记录。可以在此处查看该设置的历史:How do I set up PHP Logging to go to a remote server?
它工作正常,但换行符在目的地被剥离。有没有办法保持换行符完好无损?这是我们的配置:

来源

destination php { tcp("server.com" port(xxxx)); };  
log { source(s_all); filter(f_php); destination(php); };  
filter f_php { facility(user); };  

目的地

destination d_php { file("$PROGRAM" owner(www-data) group(www-data) perm(0644)); };  
filter f_php { program("^\/var\/log\/"); };  
log { source(s_all); filter(f_php); destination(d_php); flags(final); };  

【问题讨论】:

  • 我们刚刚发现了另一个问题。日志消息被截断为 500 个字符。这看起来像是 syslog 协议中的硬限制,可能需要从源代码重新编译。我们希望不要走这条路。有没有人遇到过这种情况?
  • 只是对上一条评论的更新。日志没有被截断,而是每 500 个字符被拆分一次。

标签: php logging syslog syslog-ng


【解决方案1】:

您可以更改目标的 syslog 模板格式并在末尾手动添加换行符。例如,这是我用于自定义 syslog-ng 流之一的模板。我更改了日期格式(更容易被脚本解析)。注意末尾的“\n”。

file("$PROGRAM"
        template("$R_ISODATE $HOST_FROM $MSGHDR$MSG\n")
        template_escape(no)
);

有关您可以使用的各种$VARS 的信息,请参阅syslog-ng docs

【讨论】:

    猜你喜欢
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2022-01-19
    相关资源
    最近更新 更多