Logback:对不同的标记使用不同的模式

时间:2015-06-09 06:28:36

标签: slf4j logback markers mdc

我正在使用的软件使用MDC来获取特定数据(用户名,IP,执行时间等)。我希望一些日志使用某些MDC使用特定模式,而某些日志使用其他模式使用其他MDC。

我认为标记可以完成这项工作,我设置了不同的标记,让我们说: PROFILE_MARKER - 用于配置文件日志 AUDIT_MARKER - 用于审计日志

我的logback.xml配置文件中有3个appender,一个用于我的标记,另一个用于所有其他日志:

<configuration>
  <appender name="profiler" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d [%t] [%X{USER}] [PROFILER] %-5p %m %X{TIME} ms %n</pattern>
    </encoder>
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
      <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
        <marker>PROFILER</marker>
      </evaluator>
      <onMismatch>DENY</onMismatch>
      <onMatch>ACCEPT</onMatch>
    </filter>
  </appender>

  <appender name="audit" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d [%t] [%X{USER}] [AUDIT] %-5p IP=%X{IP},ID=%X{ID} %m %n</pattern>
    </encoder>
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
      <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
        <marker>AUDIT</marker>
      </evaluator>
      <onMismatch>DENY</onMismatch>
      <onMatch>ACCEPT</onMatch>
    </filter>
  </appender> 

  <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d [%t] [%X{USER}] %-5p %c - %m %n</pattern>
    </encoder>
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
      <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
        <marker>AUDIT</marker>
        <marker>PROFILE</marker>
      </evaluator>
      <onMismatch>ACCEPT</onMismatch>
      <onMatch>DENY</onMatch>
    </filter>
  </appender>
  <root level="INFO">
    <appender-ref ref="audit" />
    <appender-ref ref="profiler" />
    <appender-ref ref="stdout" />
  </root>

我感觉我做错了,我应该只使用一个appender,并且可能使用不同的过滤器。但是,我无法弄清楚如何。 也许标记不是解决方案吗?

非常感谢任何帮助。

0 个答案:

没有答案