我正在尝试使用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
答案 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);