当前位置: 首页 > 知识库问答 >
问题:

Log4j2 设置日志级别

郜修雅
2023-03-14

我在spring应用程序中使用log4j2作为我的日志工具。我想为特定的库/包设置不同于根目录的日志级别。例如,我希望< code>org.springframework为INFO,而< code>com.google为WARN。我在< code>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个答案

孔俊友
2023-03-14

让我们逐步了解:

appenders = console,rolling

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

注意:这些附加器名称是自定义名称。我们可以为附加器提供任何名称。例如:附加器也可以是:

appenders = consoleOutput,myrollingFile

接下来,我们为每个appender定义一些属性。这些属性就像

    < li >应该如何显示日志消息。 < li >它将以什么样的模式显示,等等。

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

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

例如:

appender.rolling.type = File

这定义了滚动名称的追加器将在文件类型中记录其日志。

接下来,我们定义记录器

loggers = rolling

注意:这些记录器名称是自定义名称。我们可以为记录器提供任何名称。

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

    < li >针对哪些包,即包名? < li >日志的级别应该是什么? < li >我们将在哪里记录这些特定类型的日志?在控制台上?在文件上?

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

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 
贺跃
2023-03-14
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追加器。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 . another类创建的任何DEBUG或below事件也将被发送到滚动文件附加器。

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

 类似资料:
  • 我有log4j2.xml,它部分配置为: 但是,跟踪消息并不存在于两个文件附加符(fileinfo/filedebug)中。当我更改FileDebug log level=“TRACE”时,就会出现跟踪消息。

  • 使用log4j1,我能够控制单个日志记录程序级别,但属性语句似乎不能使用log4j2。我将rootLogger级别设置为DEBUG,并希望通过commons-logging抑制来自authorize.NET的大量调试日志。我正在尝试设置级别,以从http头和有线日志发出警告。 下面是详细配置记录器的log4j文档(参见“配置log4j”) 这是一个示例日志输出: 这是我当前的log4j2.prop

  • 问题内容: 我目前正在使用log4j的项目中。我正在运行一个测试用例(junit),并希望将日志级别设置为跟踪,以便我可以查看所有值是否正确。在项目中使用日志记录的类包含如下一行: 并使用类似这样的命令进行实际调试 我以前从未使用过log4j,有人知道我该如何仅为测试用例更改日志级别,最好仅通过在Eclipse的运行配置对话框中定义一个参数即可。 问题答案: 使用另一个配置文件 也许您可以指向另一

  • 我如何在log4j2中做到这一点?注我仍然需要使用新的属性文件(不是xml或json)。 TIA

  • 我正在使用一个第三方库,其来源我无法访问。这个库在错误级别上做了很多日志记录。它生成的这些错误级日志事件很有趣,但我们不认为它们是错误级事件。

  • 我是Log4J2的新手。我正在尝试配置一个使用slf4j和LOG4J2的日志记录系统。