我已在项目中配置了log4j。属性文件如下:
# Log levels
log4j.rootLogger=INFO,LOGFILE
# Rolling File Appender
log4j.appender.LOGFILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.File=D:/nova/logs/log
log4j.appender.LOGFILE.Append = true
log4j.appender.LOGFILE.Threshold=DEBUG
log4j.appender.LOGFILE.DatePattern = '.'yyyy-MM-dd
# Define the layout for file appender
log4j.appender.LOGFILE.layout=com.utility.CustomizeHTMLLayout
log4j.appender.LOGFILE.layout.LocationInfo=false
log4j.logger.org.hibernate=FATAL
所以在我的java代码中,我通过传递类名初始化LogManager :
private static Logger logger = Logger.getLogger("Admin Setting Manager");
"Admin Setting Manager"
是班级名称。
然后我正在执行以下步骤以获取根记录器信息并尝试将日志文件保存在新文件夹中:
DailyRollingFileAppender file1 =
(DailyRollingFileAppender) logger.getRootLogger().getAppender("LOGFILE");
String username = createdUser.replace(".com", "");
//createduser will have the username who is logging in the webpage
String path = "D:/nova/logs/"+username+"/lg.log";
file1.setFile(path);
这里我试图获取登录用户名并尝试创建用户名目录并将每个用户的日志保存在各自的目录中。
但每次记录器都是NULL。我无法理解为什么记录器没有被初始化。
我彻底搜索了它,但无法得到任何有关此问题的解决方案。 所以请帮助我解决这个问题。
答案 0 :(得分:1)
静态记录器getLogger(Class clazz )简写 getLogger(clazz.getName())。
静态记录器getLogger(字符串名称) 检索根据name参数的值命名的记录器。
在您的代码中,您为类名添加了空格Admin Setting Manager
,您需要删除空格。
你必须将你的代码变为,
1. Logger.getLogger(AdminSettingManager.class)
或
2. Logger logger = Logger.getLogger("yourclassnamewithoutspace");
答案 1 :(得分:0)
试试这个,
private static Logger logger = Logger.getLogger(getClass());