任何人都可以指导我如何配置log4j以记录我在运行时指定的特定文件.日志文件的名称和路径是在运行时生成的,应用程序必须登录到该特定文件.
通常,log4j.properties文件中的文件appender条目指向应用程序将使用的日志文件.但是,在这种情况下,我想从命令行读取日志文件路径并登录到该特定文件.
我怎样才能做到这一点?
jmq*_*jmq 96
您也可以从log4j.properties文件中执行此操作.使用下面的示例文件,我添加了系统属性$ {logfile.name}:
# logfile is set to be a RollingFileAppender
log4j.appender.logfile=org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File=${logfile.name}
log4j.appender.logfile.MaxFileSize=10MB
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=[%-5p]%d{yyyyMMdd@HH\:mm\:ss,SSS}\:%c - %m%n
Run Code Online (Sandbox Code Playgroud)
然后可以通过两种不同的方式设置日志文件名:
在java程序中直接通过设置系统属性(BEFORE对log4j进行任何调用).
System.setProperty("logfile.name","some path/logfile name string");
Vin*_*jip 59
改编自log4j文档:
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.SimpleLayout;
import org.apache.log4j.FileAppender;
public class SimpandFile {
static Logger logger = Logger.getLogger(SimpandFile.class);
public static void main(String args[]) {
// setting up a FileAppender dynamically...
SimpleLayout layout = new SimpleLayout();
FileAppender appender = new FileAppender(layout,"your filename",false);
logger.addAppender(appender);
logger.setLevel((Level) Level.DEBUG);
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85745 次 |
| 最近记录: |