Logback - 多个syslog appender

时间:2014-01-31 15:59:04

标签: logback

我正在使用syslog appender登录syslog,如下所示:

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>localhost</syslogHost>
        <facility>LOCAL6</facility>
        <suffixPattern>app: %logger{20} %msg</suffixPattern>
    </appender>

但我有一个新的要求,我想将一些日志发送到“LOCAL5”设施而不是LOCAL6。我已经阅读了logback配置文档http://logback.qos.ch/manual/configuration.html,但我仍然不确定如何执行此操作。

1 个答案:

答案 0 :(得分:0)

您可以使用两个syslog appender,一个用于LOCAL6,另一个用于LOCAL5

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>localhost</syslogHost>
        <facility>LOCAL6</facility>
        <suffixPattern>app: %logger{20} %msg</suffixPattern>
    </appender>


<appender name="SYSLOG1" class="ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>localhost</syslogHost>
        <facility>LOCAL5</facility>
        <suffixPattern>app: %logger{20} %msg</suffixPattern>
    </appender>

优点是您可以使用过滤器,模式,记录器名称等自定义日志(某些日志).SyslogAppender扩展了UnsyncronizedAppender。

您无法使用单个appender的原因是类facilityStringToint(String facilityStr)中的方法SyslogAppender.java接受String,然后使用equals比较哪个标准工具。 实施例

     if ("KERN".equalsIgnoreCase(facilityStr)) {
          return SyslogConstants.LOG_KERN;
     }