log4j XML配置,将一些记录器写入文件和控制台



我有3个附录的log4j的XML配置。并希望以以下方式配置Logger:

  1. 所有消息都不多,而不是将信息写入Stdout和全局日志文件附录

  2. 但是对于某些类Oauth,我想拥有额外的日志文件oauthfile

  3. 有些类是过滤的,并将消息写入错误级别上,这可以通过

    来实现
    <logger name="application" level="ERROR" />
    
  4. 有些类被过滤,并将消息写入其自己的日志文件。这也可以用添加性相等的假标志来解决。

    <logger name="MapActor" level="DEBUG" additivity="false">
         <appender-ref ref="MAPACTORFILE" />
    </logger>
    

但是我该如何解决第二个问题。Foring配置在Stdout和!在oauthfile

<configuration>
...
    <appender name="STDOUT" ...></appender>
    <appender name="FILE" ...>
    </appender>
    <appender name="OAUTHFILE" ...>
    </appender>
...
<logger name="controllers.OAuth" level="DEBUG" additivity="false">
    <appender-ref ref="OAUTHFILE" />
</logger>
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

实际上我找到了第二个任务的解决方案。我应该制作2个Stdout和File Appender-一个用于一般记录,第二个用于过滤

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %coloredLevel %cyan(%logger{15}) %message%n%xException{5}</pattern>
    </encoder>
</appender>
<appender name="STDOUTERR" class="ch.qos.logback.core.ConsoleAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>WARN</level>
    </filter>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} %coloredLevel %cyan(%logger{15}) %message%n%xException{5}</pattern>
    </encoder>
</appender>

并将第二个用作额外的appender-ref,以便在此处产生错误日志的类,如下所:

<logger name="MapActor" level="DEBUG" additivity="false">
    <appender-ref ref="MAPACTORFILEAPPENDER" />
    <appender-ref ref="STDOUTERR" />
</logger>