我正在使用一个使用slf4j的java程序。目前,该计划包含以下几行:
class MyOwn{
Logger logger; //org.slf4j.*;
static {
PropertyConfigurator.configure("somePathTo/log4j.properties");//log4j
logger = LoggerFactory.getLogger(MyOwn.class);
}
... // rest of my code is here
}
我的问题是:我需要做哪些修改才能在运行时指定logFile的名称。
背景:基本上,当程序运行时,它应该按顺序执行x
个作业。对于每个作业,我想要一个不同的fileName。
log4j.properties文件不是xml;它的文字,我必须保持这种方式。我找到了这个链接(http://cognitivecache.blogspot.com/2008/08/log4j-writing-to-dynamic-log-file-for.html),但我不知道如何使用那里的信息。
修改
以下是我当前的log4j.properties文件。我希望能够将文件目录设置在log4j.properties文件中(即/opt/stuff/var/log/jmy/proj/
),并将myown.log
替换为动态文件名。我该怎么办?同样,我想保留log4j.properties。
log4j.appender.CONSOLE=org.apache. log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache. log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d %-5p %c{1} - %m%n
log4j.rootLogger=INFO, CONSOLE
log4j.appender.MY_OWN_ERR_LOG=org.apache. log4j.RollingFileAppender
log4j.appender.MY_OWN_ERR_LOG.File=/opt/stuff/var/log/jmy/proj/myown.error.log
log4j.appender.MY_OWN_ERR_LOG.MaxFileSize=4MB
log4j.appender.MY_OWN_ERR_LOG.MaxBackupIndex=3
log4j.appender.MY_OWN_ERR_LOG.layout=org.apache. log4j.PatternLayout
log4j.appender.MY_OWN_ERR_LOG.layout.ConversionPattern=%d %-5p %c{1} - %m%n
log4j.appender.MY_OWN_ERR_LOG.Threshold = WARN
log4j.appender.MY_OWN_LOG=org.apache. log4j.RollingFileAppender
log4j.appender.MY_OWN_LOG.File=/opt/stuff/var/log/jmy/proj/myown.log
log4j.appender.MY_OWN_LOG.MaxFileSize=8MB
log4j.appender.MY_OWN_LOG.MaxBackupIndex=3
log4j.appender.MY_OWN_LOG.layout=org.apache. log4j.PatternLayout
log4j.appender.MY_OWN_LOG.layout.ConversionPattern=%d %-5p %c{1} - %m%n
log4j.logger.my.own.things=DEBUG, MY_OWN_LOG, MY_OWN_ERR_LOG
答案 0 :(得分:1)
看一下这篇文章Programmatically creating different log files using log4j
您可以以编程方式指定可以放入log4j.properties文件中的任何内容。您只需创建appender和logger对象并将它们链接在一起。
另见这里有一个更全面的例子:http://configlog4jbyprogram.blogspot.co.uk/