Java LOG4J:消息级别的一个appender

Java LOG4J:消息级别的一个appender,java,log4j,appender,Java,Log4j,Appender,我希望有X个log4j附加器,一个到文件中的消息级别,所有的都在控制台中打印。但我不明白 我的实际log4j.properties: log4j.rootLogger=ALL, CONSOLA log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLA.layout.Conve

我希望有X个log4j附加器,一个到文件中的消息级别,所有的都在控制台中打印。但我不明白

我的实际log4j.properties:

log4j.rootLogger=ALL, CONSOLA

log4j.appender.CONSOLA=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLA.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLA.layout.ConversionPattern=%-4r %d %-5p %c - %m%n

log4j.appender.WARNLOG=org.apache.log4j.FileAppender
log4j.appender.WARNLOG.threshold=WARN
log4j.appender.WARNLOG.file=XX/web/WEB-INF/serverlogs/warn-server.log
log4j.appender.WARNLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.WARNLOG.layout.ConversionPattern=%-4r %d %-5p %c - %m%n
log4j.appender.WARNLOG.append=true
log4j.appender.WARNLOG.MaxFileSize=250KB
log4j.appender.WARNLOG.MaxBackupIndex=backup

log4j.appender.FATALLOG=org.apache.log4j.FileAppender
log4j.appender.FATALLOG.threshold=FATAL
log4j.appender.FATALLOG.file=XX/web/WEB-INF/serverlogs/fatal-server.log
log4j.appender.FATALLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.FATALLOG.layout.ConversionPattern=%-4r %d %-5p %c - %m%n
log4j.appender.FATALLOG.append=true
log4j.appender.FATALLOG.MaxFileSize=250KB
log4j.appender.FATALLOG.MaxBackupIndex=backup

log4j.logger.com.XX=WARN, WARNLOG
log4j.logger.com.XX=FATAL, FATALLOG
已解决:

我使用LevelRangeFilter

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r %d %-5p %c - %m%n"/>
        </layout>
    </appender>

    <appender name="FATALLOG" class="org.apache.log4j.FileAppender">
        <param name="File" value="xx/web/WEB-INF/serverlogs/fatal-server.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r %d %-5p %c - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="FATAL"/>
            <param name="LevelMin" value="FATAL"/>
            <param name="AcceptOnMatch" value="true"/>
        </filter>
    </appender>

    <appender name="WARNLOG" class="org.apache.log4j.FileAppender">
        <param name="File" value="xx/web/WEB-INF/serverlogs/warn-server.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r %d %-5p %c - %m%n"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMax" value="WARN"/>
            <param name="LevelMin" value="WARN"/>
            <param name="AcceptOnMatch" value="true"/>
        </filter>
    </appender>

    <logger name="com.xx">
        <appender-ref ref="CONSOLE" /> 
        <appender-ref ref="FATALLOG" /> 
        <appender-ref ref="WARNLOG" /> 
    </logger>

</log4j:configuration>

使用或调整它。

您必须有不同的记录器或使用LevelMatchFilter

有关更多信息,您可以搜索完整的Log4j手册


您可以找到它,或者

您所做的将WARN+ERROR+FAILT发送到WARNLOG,而您只需要WARN?或者它根本不写入任何其他日志?(我知道您可以通过使用
log4j.rootLogger=ALL、CONSOLA、WARNLOG、fatallo
获得前一种行为,但我意识到这可能不是您所需要的。)大家好,再次感谢,了解LevelMatchFilter我看到LevelRangeFilter更好地回答了这个问题,我看到的xml也比属性文件更好。谢谢大家。手动链接+1;每次我查找Log4J时,我都会找到购买这本书的链接,而我只需要一条信息。