2013-02-24 61 views
1

我想使用html布局制作一个log4j文件。我的继承人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

您必须直接调用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); 
+0

谢谢你的帮助下,我找到了另一种方法,但是这一切都太工作。 – chettyharish 2013-02-24 17:23:22

+0

添加其他方法是? – Damo 2014-01-16 10:17:55