java禁用log4j 2异常(apache的异常)
事实证明,log4j2有时可能不安全。记录消息可能引发异常,从而破坏功能。我认为这不是期望的日志行为-日志记录应该失败而不会破坏功能。以下是一个基本示例:
InstrumentedAppender = new InstrumentedAppender (..);
appender.start();
...
appender.stop();
final Logger logger = LogManager.getLogger("LOG4J_TEST");
try {
logger.error("TEST_ERROR");
} catch (Exception e){
System.out.println("-------------- Exception is thrown");
e.printStackTrace()
}
在我的输出中,我得到:
org.apache.logging.log4j.core.appender.AppenderLoggingException: Attempted to append to non-started appender org.apache.logging.log4j.core.Appender
at org.apache.logging.log4j.core.config.AppenderControl.handleError(AppenderControl.java:142)
at org.apache.logging.log4j.core.config.AppenderControl.ensureAppenderStarted(AppenderControl.java:135)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:127)
at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:448)
at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433)
at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417)
...........
在我的应用程序中是否有任何方法可以避免这种日志行为
# 1 楼答案
这可以通过appender上的ignoreExceptions标志进行设置:
https://logging.apache.org/log4j/2.x/manual/appenders.html