我在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
意味着什么。
如何为特定包添加日志级别,以及这个滚动级别是什么?
让我们逐步了解:
appenders = console,rolling
在附加程序中,我们在想要查看日志的位置写入名称。假设,我们想查看控制台上的日志和一个文件(类型为滚动)
注意:这些附加器名称是自定义名称。我们可以为附加器提供任何名称。例如:附加器也可以是:
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
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的日志记录系统。