Log4j – 配置 Log4j 2

Log4j – 配置 Log4j 2

状态消息

针对性强的故障排除技巧

从 log4j-2.9 开始,如果系统属性 log4j2.debug 被定义为空或其值等于 true(不区分大小写),则 log4j2 将将所有内部日志记录打印到控制台。

在 log4j-2.9 之前,有两个地方可以控制内部日志记录

在找到配置之前,可以使用系统属性 org.apache.logging.log4j.simplelog.StatusLogger.level 控制状态记录器级别。

在找到配置之后,可以使用配置文件中的“status”属性控制状态记录器级别,例如:

正如希望能够诊断应用程序中的问题一样,也经常需要能够诊断日志记录配置或配置的组件中的问题。由于日志记录尚未配置,因此在初始化期间无法使用“正常”日志记录。此外,附加器中的正常日志记录可能会创建无限递归,Log4j 将检测到这一点并导致递归事件被忽略。为了满足这种需求,Log4j 2 API 包含一个 StatusLogger。组件声明 StatusLogger 的实例,类似于

protected final static Logger logger = StatusLogger.getLogger();

由于 StatusLogger 实现了 Log4j 2 API 的 Logger 接口,因此可以使用所有正常的 Logger 方法。

在配置 Log4j 时,有时需要查看生成的事件状态。这可以通过将 status 属性添加到配置元素来实现,或者可以通过设置“Log4jDefaultStatusLevel”系统属性来提供默认值。status 属性的有效值为“trace”、“debug”、“info”、“warn”、“error”和“fatal”。以下配置将 status 属性设置为 debug。

target/rolling1/rollingtest-$${sd:type}.log

filePattern="target/rolling1/test1-${sd:type}.%i.log.gz">

%d %p %c{1.} [%t] %m%n

在启动期间,此配置会生成

2011-11-23 17:08:00,769 DEBUG Generated plugins in 0.003374000 seconds

2011-11-23 17:08:00,789 DEBUG Calling createProperty on class org.apache.logging.log4j.core.config.Property for element property with params(name="filename", value="target/rolling1/rollingtest-${sd:type}.log")

2011-11-23 17:08:00,792 DEBUG Calling configureSubstitutor on class org.apache.logging.log4j.core.config.PropertiesPlugin for element properties with params(properties={filename=target/rolling1/rollingtest-${sd:type}.log})

2011-11-23 17:08:00,794 DEBUG Generated plugins in 0.001362000 seconds

2011-11-23 17:08:00,797 DEBUG Calling createFilter on class org.apache.logging.log4j.core.filter.ThresholdFilter for element ThresholdFilter with params(level="debug", onMatch="null", onMismatch="null")

2011-11-23 17:08:00,800 DEBUG Calling createLayout on class org.apache.logging.log4j.core.layout.PatternLayout for element PatternLayout with params(pattern="%m%n", Configuration(RoutingTest), null, charset="null")

2011-11-23 17:08:00,802 DEBUG Generated plugins in 0.001349000 seconds

2011-11-23 17:08:00,804 DEBUG Calling createAppender on class org.apache.logging.log4j.core.appender.ConsoleAppender for element Console with params(PatternLayout(%m%n), null, target="null", name="STDOUT", ignoreExceptions="null")

2011-11-23 17:08:00,804 DEBUG Calling createFilter on class org.apache.logging.log4j.core.filter.ThresholdFilter for element ThresholdFilter with params(level="debug", onMatch="null", onMismatch="null")

2011-11-23 17:08:00,813 DEBUG Calling createRoute on class org.apache.logging.log4j.core.appender.routing.Route for element Route with params(AppenderRef="null", key="null", Node=Route)

2011-11-23 17:08:00,823 DEBUG Calling createRoute on class org.apache.logging.log4j.core.appender.routing.Route for element Route with params(AppenderRef="STDOUT", key="Audit", Node=Route)

2011-11-23 17:08:00,825 DEBUG Calling createRoutes on class org.apache.logging.log4j.core.appender.routing.Routes for element Routes with params(pattern="${sd:type}", routes={Route(type=dynamic default), Route(type=static Reference=STDOUT key='Audit')})

2011-11-23 17:08:00,827 DEBUG Calling createAppender on class org.apache.logging.log4j.core.appender.routing.RoutingAppender for element Routing with params(name="Routing", ignoreExceptions="null", Routes({Route(type=dynamic default),Route(type=static Reference=STDOUT key='Audit')}), Configuration(RoutingTest), null, null)

2011-11-23 17:08:00,827 DEBUG Calling createAppenders on class org.apache.logging.log4j.core.config.AppendersPlugin for element appenders with params(appenders={STDOUT, Routing})

2011-11-23 17:08:00,828 DEBUG Calling createAppenderRef on class org.apache.logging.log4j.core.config.plugins.AppenderRefPlugin for element AppenderRef with params(ref="Routing")

2011-11-23 17:08:00,829 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig for element logger with params(additivity="false", level="info", name="EventLogger", AppenderRef={Routing}, null)

2011-11-23 17:08:00,830 DEBUG Calling createAppenderRef on class org.apache.logging.log4j.core.config.plugins.AppenderRefPlugin for element AppenderRef with params(ref="STDOUT")

2011-11-23 17:08:00,831 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger for element root with params(additivity="null", level="error", AppenderRef={STDOUT}, null)

2011-11-23 17:08:00,833 DEBUG Calling createLoggers on class org.apache.logging.log4j.core.config.LoggersPlugin for element loggers with params(loggers={EventLogger, root})

2011-11-23 17:08:00,834 DEBUG Reconfiguration completed

2011-11-23 17:08:00,846 DEBUG Calling createLayout on class org.apache.logging.log4j.core.layout.PatternLayout for element PatternLayout with params(pattern="%d %p %c{1.} [%t] %m%n", Configuration(RoutingTest), null, charset="null")

2011-11-23 17:08:00,849 DEBUG Calling createPolicy on class org.apache.logging.log4j.core.appender.rolling.SizeBasedTriggeringPolicy for element SizeBasedTriggeringPolicy with params(size="500")

2011-11-23 17:08:00,851 DEBUG Calling createAppender on class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile with params(fileName="target/rolling1/rollingtest-Unknown.log", filePattern="target/rolling1/test1-Unknown.%i.log.gz", append="null", name="Rolling-Unknown", bufferedIO="null", immediateFlush="null", SizeBasedTriggeringPolicy(SizeBasedTriggeringPolicy(size=500)), null, PatternLayout(%d %p %c{1.} [%t] %m%n), null, ignoreExceptions="null")

2011-11-23 17:08:00,858 DEBUG Generated plugins in 0.002014000 seconds

2011-11-23 17:08:00,889 DEBUG Reconfiguration started for context sun.misc.Launcher$AppClassLoader@37b90b39

2011-11-23 17:08:00,890 DEBUG Generated plugins in 0.001355000 seconds

2011-11-23 17:08:00,959 DEBUG Generated plugins in 0.001239000 seconds

2011-11-23 17:08:00,961 DEBUG Generated plugins in 0.001197000 seconds

2011-11-23 17:08:00,965 WARN No Loggers were configured, using default

2011-11-23 17:08:00,976 DEBUG Reconfiguration completed

如果 status 属性设置为 error,则只会将错误消息写入控制台。这使得故障排除配置错误成为可能。例如,如果将上面的配置更改为将 status 设置为 error,并将记录器声明更改为

则会生成以下错误消息。

2011-11-24 23:21:25,517 ERROR Unable to locate appender Routng for logger EventLogger

应用程序可能希望将状态输出定向到其他目的地。这可以通过将 dest 属性设置为“err”来实现,以将输出发送到 stderr,或者发送到文件位置或 URL。这也可以通过确保配置的状态设置为 OFF,然后以编程方式配置应用程序来实现,例如

StatusConsoleListener listener = new StatusConsoleListener(Level.ERROR);

StatusLogger.getLogger().registerListener(listener);

相关推荐

软件的价值
365游戏

软件的价值

📅 08-05 👁️ 5128
小窍门:切洋葱不辣眼睛的方法
365游戏

小窍门:切洋葱不辣眼睛的方法

📅 08-06 👁️ 1529
勇士奥克兰搬到旧金山
3658官方网

勇士奥克兰搬到旧金山

📅 07-29 👁️ 7029