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.xml的log4j(通过slf4j)。我想知道如何禁用log4j显示的关于其自身的消息。 例如,如果无法创建log4j.xml中指定的日志文件,log4j将在控制台上显示以下消息:

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>