创建动态log4j输出文件

时间:2013-02-24 09:41:48

标签: java logging log4j

我正在尝试使用html布局制作log4j文件。继承我的log4j文件

# Define the root logger with appender file
log = /usr/home/log4j
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/htmlLayout.html

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.Title=HTML Layout Example
log4j.appender.FILE.layout.LocationInfo=true

这是静态的,但我想让我的主方法通过这一行

log4j.appender.FILE.File=myfilepath/myfilename.html

我该怎么做?目前我试图使用属性,但它会删除所有内容,只显示此行。

请注意,日志文件路径取决于项目的jar文件执行位置,就像这样

  

(jarDir)/logs/myfilename.html

1 个答案:

答案 0 :(得分:1)

您必须直接调用log4j配置程序,而不是依赖于默认的初始化行为。将属性文件命名为log4j.properties以外的其他内容,因此默认过程找不到它,然后在代码中可以执行

Properties props = new Properties();
// if MyClass is in package com.example, look for
// com/example/log4j-config.properties inside the jar
InputStream in = MyClass.class.getResourceAsStream("log4j-config.properties");
try {
  props.load(in);
} finally {
  in.close();
}

// override file location
props.setProperty("log4j.appender.FILE.File", "myfilepath/myfilename.html");

LogManager.resetConfiguration();
PropertyConfigurator.configure(props);