我正在用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]] ...
这个答案有工作的例子。
如果从文件中HelloWithDependenciesresourceslog4j.properties
log4j.rootLogger=INFO, stdout, file
行中删除stdout,
并重新生成.jar
项目,则不会生成任何控制台输出,日志记录将仅进入文件。