Log4j2 设置日志级别
Log4j2 setting log levels
我在 spring 应用程序中使用 log4j2 作为我的日志记录实用程序。我想将特定 libraries/packages 的日志级别设置为与根目录不同的级别。例如,我希望 org.springframework
为 INFO,com.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
是什么意思。
如何为特定包添加日志级别,这个滚动级别是什么东西?
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 的新滚动文件附加程序。滚动文件附加器是一种附加器,例如,它可以增长到固定大小,然后在删除最旧的条目的同时继续添加新条目。它们也可以是基于时间的等等。
logger.rolling.name = com.test.app
logger.rolling.level = ALL
logger.rolling.appenderRef.rolling.ref = RollingFile
这告诉 log4j 将来自名为 com.test.app 的记录器的任何事件发送到上述 RollingFile appender。 log4j 不会过滤掉任何事件,因为此记录器的级别设置为 ALL。 "rolling" 和 "logger.rolling" 一样只是记录器的标识符。这是必要的,因为属性文件是非结构化的,因此您需要一种方法来区分哪些行放在一起。使用 XML 配置消除了这种需要
rootLogger.level = info
任何由其他记录器创建的未在属性中定义的事件都将被过滤,并且仅记录 INFO 或以下信息。
文档在这里:https://logging.apache.org/log4j/2.x/manual/configuration.html#Properties
要回答您的问题,这取决于如何在应用程序中创建记录器。记录器实际上是在 java 中创建的,这就是分配它们的名称的地方。属性文件仅指示 log4j 如何处理每个记录器。您需要使用 class 中定义的名称将记录器添加到属性文件中。如果 class 本身用于创建记录器,如 apache 所建议的,那么该名称将始终是 class 的完全限定名称。例如:
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
让我们一步一步来理解:
appenders = console,rolling
在 appenders 中,我们在想要查看日志的地方写下名称。
假设,我们想在控制台上查看日志和一个文件(滚动类型)
注意:这些附加程序名称是自定义名称。我们可以为 appenders 起任何名字。
例如:附加程序也可以是:
appenders = consoleOutput,myrollingFile
接下来,我们为每个appender定义一些属性。这些属性就像
- 应如何显示日志消息。
- 它将以什么模式显示等等
为此,我们使用以下格式:
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
我在 spring 应用程序中使用 log4j2 作为我的日志记录实用程序。我想将特定 libraries/packages 的日志级别设置为与根目录不同的级别。例如,我希望 org.springframework
为 INFO,com.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
是什么意思。
如何为特定包添加日志级别,这个滚动级别是什么东西?
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 的新滚动文件附加程序。滚动文件附加器是一种附加器,例如,它可以增长到固定大小,然后在删除最旧的条目的同时继续添加新条目。它们也可以是基于时间的等等。
logger.rolling.name = com.test.app logger.rolling.level = ALL logger.rolling.appenderRef.rolling.ref = RollingFile
这告诉 log4j 将来自名为 com.test.app 的记录器的任何事件发送到上述 RollingFile appender。 log4j 不会过滤掉任何事件,因为此记录器的级别设置为 ALL。 "rolling" 和 "logger.rolling" 一样只是记录器的标识符。这是必要的,因为属性文件是非结构化的,因此您需要一种方法来区分哪些行放在一起。使用 XML 配置消除了这种需要
rootLogger.level = info
任何由其他记录器创建的未在属性中定义的事件都将被过滤,并且仅记录 INFO 或以下信息。
文档在这里:https://logging.apache.org/log4j/2.x/manual/configuration.html#Properties
要回答您的问题,这取决于如何在应用程序中创建记录器。记录器实际上是在 java 中创建的,这就是分配它们的名称的地方。属性文件仅指示 log4j 如何处理每个记录器。您需要使用 class 中定义的名称将记录器添加到属性文件中。如果 class 本身用于创建记录器,如 apache 所建议的,那么该名称将始终是 class 的完全限定名称。例如:
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
让我们一步一步来理解:
appenders = console,rolling
在 appenders 中,我们在想要查看日志的地方写下名称。 假设,我们想在控制台上查看日志和一个文件(滚动类型)
注意:这些附加程序名称是自定义名称。我们可以为 appenders 起任何名字。 例如:附加程序也可以是:
appenders = consoleOutput,myrollingFile
接下来,我们为每个appender定义一些属性。这些属性就像
- 应如何显示日志消息。
- 它将以什么模式显示等等
为此,我们使用以下格式:
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