我想在Java中动态设置我的日志文件名,这就是为什么我试图以编程方式配置重新实现我的日志文件,以便我可以用变量设置日志文件名。
我不知道如何告诉log4j在info
级别记录某个包。
我的log4j.properties
看起来像这样:
log4j.rootLogger = warn, FILE
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=log.txt
log4j.appender.FILE.Append=false
log4j.appender.FILE.MaxFileSize=99999999KB
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%m - %5p %d{HH:mm:ss,SSS} [%t] (%F:%L)%n
log4j.logger.a.b.c.d=info
到目前为止我所拥有的是:
FileAppender fa = new FileAppender();
fa.setName("FileLogger");
fa.setFile("mylog"+args+".log");
fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
fa.setThreshold(Level.WARN);
fa.setAppend(false);
fa.activateOptions();
//add appender to any Logger (here is root)
Logger.getRootLogger().addAppender(fa);
Logger.getLogger("a.b.c.d").setLevel(Level.INFO);
如果我将FileAppender设置为warn
,如果我将其设置为info
,则不会记录任何内容。我的最后一行代码似乎没有任何效果。有人知道缺少什么吗?
答案 0 :(得分:0)
请从appender中删除setThreshold并进行测试。它对我有用。
来自Javadocs
public void setThreshold(优先级阈值) 设置阈值级别。 appender会忽略级别低于阈值级别的所有日志事件。 在配置文件中,通过将Threshold选项的值设置为级别字符串来指定此选项,例如“DEBUG”,“INFO”等。