【问题标题】:Can I use a more advanced template for extracting $PROGRAM in syslog-ng?我可以使用更高级的模板在 syslog-ng 中提取 $PROGRAM 吗?
【发布时间】:2010-08-10 13:22:06
【问题描述】:

我正在使用 Java 中的两个 Apache SyslogAppender 向 Syslog 发送消息。我的转换模式是:

Instance-${jboss.server.name}: %d %-5p [%c] (%t) %m%n
Application-MyApp: ${jboss.server.name} - %d %-5p [%c] (%t) %m%n

然后,我将不同的 Log4J 类别配置为向其中一个或两个附加程序发送不同的消息。

在我的系统日志配置文件中,我有:

destination d_jboss_appli_integ {
    file("/var/log/syslog-ng/JBoss/intg/Applications/$PROGRAM/$YEAR$MONTH$DAY.log"
    template("Application-$PROGRAM: $MSG\n"));
};
destination d_jboss_instance_integ {
    file("/var/log/syslog-ng/JBoss/intg/Instances/$PROGRAM/$YEAR$MONTH$DAY.log"
    template("Instance-$PROGRAM: $MSG\n"));
};

像这样,我想要记录到/var/log/syslog-ng/JBoss/intg/Applications/MyApp/中的一个文件和/var/log/syslog-ng/JBoss/intg/Instances/${jboss.server.name}/中的一个文件,其中${jboss.server.name}被JBoss服务器的名称替换。

相反,我将日志写入名为 Application-MyApp 和 Instance-${jboss.server.name} 的文件夹。

是否可以使用 Syslog 中的 template() 指令从消息中正确提取 $PROGRAM 的值,分别获取 MyApp 和 ${jboss.server.name}?

提前致谢

丰富

ps:需要明确的是 ${jboss.server.name} 正在到处适当地扩展。

【问题讨论】:

    标签: log4j syslog syslog-ng


    【解决方案1】:

    我找到了解决方案:更改消息的格式,使您想要的值作为$PROGRAM 的值是第一个冒号之前的唯一值:

    所以,如下:

    Instance-${jboss.server.name}: %d %-5p [%c] (%t) %m%n
    Application-MyApp: ${jboss.server.name} - %d %-5p [%c] (%t) %m%n
    

    变成:

    ${jboss.server.name}:Instance: %d %-5p [%c] (%t) %m%n
    MyApp:Application:${jboss.server.name}: - %d %-5p [%c] (%t) %m%n
    

    这样,模板正确返回我想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2013-12-28
      • 1970-01-01
      • 2011-04-01
      • 2020-06-04
      • 1970-01-01
      相关资源
      最近更新 更多