log4j如何禁用内部消息?
我正在使用配置了log4j.xml的log4j(通过slf4j)。我想知道如何禁用log4j显示的关于其自身的消息。 例如,如果无法创建log4j.xml中指定的日志文件,log4j将在控制台上显示以下消息:log4j如何禁用内部消息?,log4j,Log4j,我正在使用配置了log4j.xml的log4j(通过slf4j)。我想知道如何禁用log4j显示的关于其自身的消息。 例如,如果无法创建log4j.xml中指定的日志文件,log4j将在控制台上显示以下消息: log4j:错误setFile(null,true)调用失败。 java.io.FileNotFoundException:\LogFile.log(Accesso否定) 在java.io.FileOutputStream.open(本机方法) 位于java.io.FileOutputSt
log4j:错误setFile(null,true)调用失败。
java.io.FileNotFoundException:\LogFile.log(Accesso否定)
在java.io.FileOutputStream.open(本机方法)
位于java.io.FileOutputStream。(FileOutputStream.java:212)
位于java.io.FileOutputStream。(FileOutputStream.java:136)
位于org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
位于org.apache.log4j.RollingFileAppender.setFile(RollingFileAppender.java:207)
位于org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
位于org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:307)
位于org.apache.log4j.xml.DOMConfigurator.parseAppender(DOMConfigurator.java:295)
位于org.apache.log4j.xml.DOMConfigurator.findAppenderByName(DOMConfigurator.java:176)
位于org.apache.log4j.xml.DOMConfigurator.findAppenderByReference(DOMConfigurator.java:191)
位于org.apache.log4j.xml.DOMConfigurator.parseChildrenOfLoggerElement(DOMConfigurator.java:523)
位于org.apache.log4j.xml.DOMConfigurator.parseRoot(DOMConfigurator.java:492)
位于org.apache.log4j.xml.DOMConfigurator.parse(DOMConfigurator.java:1006)
位于org.apache.log4j.xml.domconfigure(DOMConfigurator.java:872)
位于org.apache.log4j.xml.domconfigure(DOMConfigurator.java:778)
在org.apache.log4j.helpers.OptionConverter.selectAndConfigure上(OptionConverter.java:526)
登录org.apache.log4j.LogManager(LogManager.java:127)
位于org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:66)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:270)
位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
我不希望用户看到完整的异常堆栈。
提前感谢解决方案是编写一个
com.myapp.SilentErrorHandler
,它实现了org.apache.log4j.spi.ErrorHandler
,但什么也不做
log4j.xml
中的配置为:
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<errorHandler class="com.myapp.SilentErrorHandler" />
<param name="File" value="\LogFile.log"/>
<layout class="org.apache.log4j.PatternLayout">
...
</layout>
</appender>
...
请注意,默认忽略错误通常是一件坏事。您可以考虑使用<代码> FallbackErrorHandler <代码>,它允许在主代理失败时指定回退附加程序。谢谢!也谢谢你的建议,我很快会尝试回退错误处理程序
<appender name="file" class="org.apache.log4j.RollingFileAppender">
<errorHandler class="com.myapp.SilentErrorHandler" />
<param name="File" value="\LogFile.log"/>
<layout class="org.apache.log4j.PatternLayout">
...
</layout>
</appender>