java - log4j 错误:值未通过键解析:project_report_directory
问题描述
我尝试在我的项目中使用 log4j 并创建了以下逻辑:
日志类:
public class Log {
//Initialize Log4j instance
private static Logger Log = Logger.getLogger(Log.class.getName());
//We can use it when starting tests
public static void startLog (String testClassName){
Log.info("Test is Starting...");
}
//We can use it when ending tests
public static void endLog (String testClassName){
Log.info("Test is Ending...");
}
//Info Level Logs
public static void info (String message) {
Log.info(message);
}
//Warn Level Logs
public static void warn (String message) {
Log.warn(message);
}
//Error Level Logs
public static void error (String message) {
Log.error(message);
}
//Fatal Level Logs
public static void fatal (String message) {
Log.fatal(message);
}
//Debug Level Logs
public static void debug (String message) {
Log.debug(message);
}
}
log4j.properties:
#logging level
log4j.rootLogger=INFO, stdout, file, console
# stdout settings
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n
log4j.logger.org.mortbay.log = INFO
# File settings
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=c:\\Combo.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
所以当我尝试执行测试时:
公共类 LoginTests 扩展 BaseTest {
@Test (priority = 0, description="Invalid Login Scenario with wrong username and password.")
public void invalidLoginTest_InvalidUserNameInvalidPassword () {
Log.info("Debug message");
}
我得到的堆栈跟踪开始于:
并完成:
控制台包含很多行(几百行)和文本2020-11-05 23:00:51 PlaceholderResolver [main] [WARN] Value not resolved by key: project_report_directory
和非常长的sacttrace java.lang.StackOverflowError
:
这个错误是什么意思,以及如何解决这个问题?
解决方案
当文件lo4j.properties
不存在时会出现此问题。
项目运行良好的文件示例:
# Root logger option
log4j.rootLogger=INFO, file, stdout
# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${user.dir}/Log4j/log4j-test-automation.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
#do not append the old file. Create a new log file everytime
log4j.appender.dest1.Append=false
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-4p] %d{dd-MM-yy HH:mm:ss} %t | %m%n
推荐阅读
- c# - 为什么返回新视图不会重置表单
- expression - qlikview 的月差
- python - Pandas Dataframes 的 Python 字典 - 迭代和调用
- python - 模拟 pandas 的返回值 apply
- pandas - 有没有办法用他们的 ip 递归地对用户进行分组?
- c++ - 如何修复找不到匹配的重载函数?
- flutter - 加入音频/视频通话后如何检测远程用户有连接问题?
- python - 根据另一个字典键值对更新列表中的字典键
- java - 升级 AWS Elastic Beanstalk 的平台版本后的 handshake_failure
- java - 如何在 Java 中将“2019-08-07T14:00:00-0400”转换为 SQL DATETIME 格式?