我正在做一个连接到Documentum数据存储的JavaFx
项目,我正在尝试使用Log4jV2
添加日志记录功能我已经下载了该文件并将以下Jars添加到我的库文件中。 (log4j-api-2.6.2.jar , log4j-core-2.6.2.jar
)并成功导入以下内容:
import org.apache.log4j.LogManager;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.LoggerContext;
然后我创建了一个名为config.xml的文件,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.apache.log4j.xml" level="info" additivity="false"/>
<Root level="debug">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>
并将其放在我的其他类旁边的源文件中,然后开始将其配置为beloew:
public class BGMController implements Initializable {
static final org.apache.log4j.Logger logger = LogManager.getLogger(BGMController.class.getName());
/////other content of my program /////////////////
public void initialize(URL location, ResourceBundle resources) {
DOMConfigurator.configure("config.xml");
// createCheckbox();
// createTable();
logger.warn(" test Sample warn message");
logger.error(" test Sample error message");
logger.fatal(" test Sample fatal message");
logger.debug(" test Sample debug message");
logger.info(" test Sample info message");
}
}
结果我得到所有这些错误加上我的错误,警告,致命似乎工作正常而不是调试和信息:
我知道如何解决这个问题。它花了我很多天,我不知道我在哪里犯错误:|
0 [JavaFX Application Thread] ERROR com.documentum.fc.common.impl.logging.LoggingConfigurator - Problem locating log4j configuration
3 [JavaFX Application Thread] WARN com.documentum.fc.common.impl.logging.LoggingConfigurator - Using default log4j configuration
20900 [JavaFX Application Thread] WARN application.BGMController - test Sample warn message
20900 [JavaFX Application Thread] ERROR application.BGMController - test Sample error message
20901 [JavaFX Application Thread] FATAL application.BGMController - test Sample fatal message
答案 0 :(得分:1)
DomConfigurator适用于Log4j 1.x,因此您永远不会配置Log4j。默认行为应该只发生记录错误,并且对STDOUT是致命的。
你想使用Configurator是Log4j 2.但是你可以在初始化方法被调用之前声明一个静态Logger,Log4j会在你有机会配置它之前进行初始化,所以你可能最终得到了首先创建默认配置,然后在调用initialize方法后创建配置。