Log4j2设置日志级别

时间:2017-05-03 19:33:07

标签: java spring logging log4j2 rollingfileappender

我在我的spring应用程序中使用log4j2作为我的日志记录实用程序。我想将特定库/包的日志级别设置为与根不同的日志级别。例如,我希望INFO和org.springframeworkcom.google为WARN。我在log4j2.properties

中找到了这个
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的含义。

如何为特定软件包添加日志级别以及这些滚动级别的内容是什么?

2 个答案:

答案 0 :(得分:7)

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 appender。 log4j不会过滤掉任何事件,因为此记录器的级别设置为ALL。 “logger.rolling”中的“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

现在,com.test.AnotherClass创建的任何DEBUG或以下事件也将被发送到RollingFile appender。

所有这些都在这里解释:https://logging.apache.org/log4j/2.x/manual/architecture.html

答案 1 :(得分:0)

让我们逐步了解:

appenders = console,rolling

在附加程序中,我们在要查看日志的位置写上名称。 假设我们要在控制台上查看日志和一个文件(类型为rolling)

注意:这些追加程序名称是自定义名称。我们可以给追加者起任何名字。 例如:追加者也可以是:

appenders = consoleOutput,myrollingFile

下一步,我们为每个附加程序定义了一些属性。这些属性就像

  • 应该如何显示日志消息。
  • 将以何种模式显示它,等等。

为此,我们使用以下格式:

appender.<appender-name>.<property-name>=<property-value>

例如:

appender.rolling.type = File

这定义滚动名称的附加程序将以“文件”类型记录其日志。

下一步,我们定义了记录器

loggers = rolling

注意:这些记录器名称是自定义名称。我们可以给记录器起任何名字。

记录器通常描述以下记录内容:

  • 什么包即包名?
  • 什么级别的日志?
  • 我们将在哪里记录这些特定类型的日志?在控制台上?在文件上?

为此,我们使用以下格式:

logger.<logger-name>.<logger-property>=<property-value>

logger.rolling.name = com.my.package.name  
logger.rolling.level = debug  
logger.rolling.additivity = true  
logger.rolling.appenderRef.rolling.ref = File