2017-05-03 263 views
1

我在我的spring应用程序中使用log4j2作为我的日志记录实用程序。我想将特定库/包的日志级别设置为与根不同的内容。例如,我希望org.springframework到INFO和com.google是WARN。我发现这个在log4j2.propertiesLog4j2设置日志级别

appender.rolling.type = RollingFile 
appender.rolling.name = RollingFile 
logger.rolling.name = com.test.app 
logger.rolling.level = ALL 
logger.rolling.appenderRef.rolling.ref = RollingFile 

rootLogger.level = info 

我不明白是什么logger.rolling手段?我一直在log4j2文档中找到它,但没有解释什么是或什么是ALL的含义。

如何为特定软件包添加日志级别以及此滚动级别是什么?

+0

你读过[这](https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender)? –

+0

@EdwinDalorzo是的,但它没有关于'rolling.level' – Richard

回答

3
Level intLevel 
OFF 0 
FATAL 100 
ERROR 200 
WARN 300 
INFO 400 
DEBUG 500 
TRACE 600 
ALL Integer.MAX_VALUE 

https://logging.apache.org/log4j/2.x/manual/customloglevels.html

一个log4j的记录器会记录下其阈值的所有事件,因此,如果设置为ALL,因为它使用了其阈值的最大值它会记录每一个事件。

appender.rolling.type = RollingFile 
appender.rolling.name = RollingFile 

这是定义一个名为RollingFile新的滚动文件附加目的地。滚动文件appender是一个appender,例如,它可以增长为固定大小,然后在删除最旧的条目时继续添加新条目。它们也可以是基于时间的等

logger.rolling.name = com.test.app 
logger.rolling.level = ALL 
logger.rolling.appenderRef.rolling.ref = RollingFile 

这是告诉log4j的从名为com.test.app上述RollingFile附加器记录器发送的任何事件。由于此记录器的级别设置为ALL,log4j不会过滤掉任何事件。在“logger.rolling”中的“滚动”就是记录器的标识符。这是必要的,因为属性文件是非结构化的,因此您需要一种方法来区分哪些线条放在一起。使用XML配置消除了需要

rootLogger.level = info 

通过未在属性定义的其他记录器创建的任何事件将被过滤,只有INFO或以下将被记录。

的文档是在这里:https://logging.apache.org/log4j/2.x/manual/configuration.html#Properties

要回答你的问题,它取决于记录器是如何在应用程序中创建的。记录器实际上是在java中创建的,并且这是他们的名字被分配的地方。属性文件仅指示log4j如何处理每个记录器。您需要使用类中定义的名称将记录器添加到属性文件中。如果该类本身用于创建记录器,如apache建议的那样,那么该名称将始终是该类的完全限定名称。例如:

logger.secondclass.name = com.test.AnotherClass 
logger.secondclass.level = DEBUG 
logger.secondclass.appenderRef.rolling.ref = RollingFile 

现在,任何DEBUG或低于由com.test.AnotherClass创建的事件也将被发送到RollingFile附加目的地。

所有这一切都在这里解释:​​