关于Log4jAppender的问题

时间:2010-12-11 18:33:01

标签: java logging log4j

我已经开始学习一些关于log4j的东西,因为到目前为止它的工作正常是来自log4j.property文件的代码

    # Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1,xml



# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# ${applicationRoot}/logs/xml.log
log4j.appender.xml=org.apache.log4j.RollingFileAppender
log4j.appender.xml.File=G:/TESTGEN/logs/xmlimpex.log
log4j.appender.xml.MaxFileSize=2MB
log4j.appender.xml.MaxBackupIndex=2
log4j.appender.xml.layout = org.apache.log4j.PatternLayout
log4j.appender.xml.layout.ConversionPattern=%p %t %c - %m%n

并且它在控制台上进行了非常精细的打印以及记录到文件。我想知道是否可以按照以下方式执行操作

我想我应该能够在控制台上记录这个log4j文件正在做什么 但同时我希望在我使用RollingFileAppender配置的日志文件中只记录警告和错误的条目。

请建议我如何做到这一点

提前致谢 Umesh制作

2 个答案:

答案 0 :(得分:1)

log4j.rootLogger=DEBUG,A1
log4j.newlogger=WARN, XML

Log4j以这种方式工作:您可以创建多个记录器,这些记录器适合于根记录器始终位于顶部的层次结构。记录器可以从父记录器继承级别和追加器(如果启用了可加性标记)。

在我给你的例子中,你创建的新记录器是在WARN级别触发的。它有XML作为appenders,但也有A1(它继承自Root logger)。

请注意,如果我们没有设置newLogger的级别,它将继承DEBUG级别。

log4j中的Hiearchies在java包中使用(使用点)并依赖于记录器名称。 Logger X是logger X.Y的父级,它是logger X.Y.Z的父级。 Logger X始终是Root记录器的子项。

您可以在Log4j introduction

中详细了解相关信息

答案 1 :(得分:0)

在Log4net的文档中,它说某处你可以设置从appender处理哪些级别。