【问题标题】:Error using Logback Marker in FileAppender在 FileAppender 中使用 Logback 标记时出错
【发布时间】:2012-12-21 23:51:23
【问题描述】:

我已经开始为我们的应用程序探索 Logback 选项。其中一项要求是为具有特定“标记”的日志条目创建单独的日志文件。

下面是我正在使用的 logback.xml 文件和我遇到的错误。 logback 网站上的示例显示了 SMTPAppender 的用法,但我想改用 FileAppender。这可能吗?如果没有,我还有什么其他选择?

<property name="USER_HOME" value="c:/temp" />

<appender name="AUDIT_FILE" class="ch.qos.logback.core.FileAppender">        
    <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
        <marker>APPEND_SYSLOG</marker>
    </evaluator>
    <file>${USER_HOME}/mw_syslog.log</file>        
    <encoder>
        <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
</appender>

<root level="debug">
    <appender-ref ref="AUDIT_FILE" />
</root>


    12:07:01,515 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [file:/C:/JavaProjects/LogbackWeb/target/LogbackWeb-1.0-SNAPSHOT/WEB-INF/classes/logback.xml]
    12:07:02,013 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set
    12:07:02,134 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.FileAppender]
    12:07:02,176 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [AUDIT_FILE]
    12:07:02,286 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@43:76 - no applicable action for [evaluator], current pattern is [[configuration][appender][evaluator]]
    12:07:02,286 |-ERROR in ch.qos.logback.core.joran.spi.Interpreter@44:21 - no applicable action for [marker], current pattern is [[configuration][appender][evaluator][marker]]
    12:07:02,310 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
    12:07:02,828 |-INFO in ch.qos.logback.core.FileAppender[AUDIT_FILE] - File property is set to [c:/temp/mw_syslog.log]
    12:07:02,836 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
    12:07:02,836 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [AUDIT_FILE] to Logger[ROOT]
    12:07:02,842 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
    12:07:02,855 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@3ad1a015 - Registering current configuration as safe fallback point

【问题讨论】:

    标签: java logback marker fileappender


    【解决方案1】:

    在 SMTPAppender 中,评估器用于触发。在 FileAppender 中,您需要将评估器封装在过滤器中,准确地说是 evaluator filter。这是一个例子:

    <property name="USER_HOME" value="c:/temp" />
    
    <appender name="AUDIT_FILE" class="ch.qos.logback.core.FileAppender">        
        <!-- the filter element -->
        <filter class="ch.qos.logback.core.filter.EvaluatorFilter">   
          <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
            <marker>APPEND_SYSLOG</marker>
          </evaluator>
         <onMismatch>DENY</onMismatch>
         <onMatch>NEUTRAL</onMatch>
       </filter>
        <file>${USER_HOME}/mw_syslog.log</file>        
        <encoder>
            <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
        </encoder>
    </appender>
    
    <root level="debug">
        <appender-ref ref="AUDIT_FILE" />
    </root>
    

    【讨论】:

    • 谢谢切基。那行得通。感谢您的帮助。默认情况下,我的所有日​​志都将记录在 server.log 中,并且只有标记的一次记录在 FileAppender 中指定的此文件中。
    • 注: OnMarkerEvaluator 在 1.1.7 中已损坏 - 您将收到错误 Unexpected aggregationType AS_BASIC_PROPERTY_COLLECTION
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-10
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多