1

我正在尝试使用 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

4

1 回答 1

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);
于 2013-02-24T10:46:00.070 回答