不应该在控制台上输出Log4j的情况

时间:2019-04-02 15:29:53

标签: java intellij-idea log4j

我正在IntelliJ中编写Java应用程序,并且正在使用log4j。我从xml文件中禁用了控制台输出,但是在运行jar(而不是Java,JAR)时,它会一直输出。我使用该存储库进行了一些实验:https://github.com/optimaize/language-detector

我已经尝试添加log4j.properties和log4j.xml的不同配置,但是它一直输出控制台信息。这是我的log4j.xml文件,位于:src / main / resources / log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false" xmlns:log4j='http://jakarta.apache.org/log4j/'>

<appender name="file" class="org.apache.log4j.RollingFileAppender">
  <param name="append" value="false" />
  <param name="maxFileSize" value="10MB" />
  <param name="maxBackupIndex" value="10" />
  <param name="file" value="C:/logs/myStruts1App.log" />
</appender>

<root>

 <level value="INFO" />
    <appender-ref ref="file" />
</root>

</log4j:configuration>

根据此处有关栈溢出的其他指南,应该做到这一点。但是当我运行jar时:java -jar MyJar.jar它会输出

17:20:41.017 [main] DEBUG c.o.langdetect.LanguageDetectorImpl - ==> [DetectedLanguage[bn:0.9999940935958097]]
17:20:41.019 [main] DEBUG c.o.langdetect.LanguageDetectorImpl - ==> [DetectedLanguage[bn:0.9999940935958097]]
17:20:41.020 [main] DEBUG c.o.langdetect.LanguageDetectorImpl - ==> [DetectedLanguage[en:0.9999940935958097]]
17:20:41.020 [main] DEBUG c.o.langdetect.LanguageDetectorImpl - ==> [DetectedLanguage[fr:0.9999940935958097]] ...

1 个答案:

答案 0 :(得分:0)

This answer具有working example

如果从stdout,文件的log4j.rootLogger=INFO, stdout, file行中删除HelloWithDependencies\resources\log4j.properties并重建.jar工件,它将不会产生任何控制台输出,日志记录将进入该文件