在 log4j 中将 ConsoleAppender 替换为 FileAppender
Replacing ConsoleAppender to FileAppender in log4j
我已经使用 ConsoleAppender 在 log4j 记录器上创建了一个记录器。
代码如下,
public class AppLogger{
static {
ConsoleAppender ca = new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
org.apache.log4j.Logger.getRootLogger().addAppender(ca);
}
public AppLogger(Class classname) {
logger = LoggerFactory.getLogger(classname);
}
public void debug(String message){
logger.debug(message);
}
...
...
}
我还没有使用 log4j.properties 文件,因为我不确定把它放在哪里。上面的代码工作正常并在控制台上正确记录。现在我想将其更改为与 FileAppender 一起使用。
我简单地更新了静态构造函数如下,
FileAppender fa = new FileAppender();
fa.setFile("d:/log.txt");
fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
org.apache.log4j.Logger.getRootLogger().addAppender(fa);
并添加了 fa
而不是 ca
。但是现在我收到了这个错误,
log4j:ERROR No output stream or file set for the appender named [null].
我不确定我缺少哪个 属性 来定义 File Appender。
您忘记激活选项:
FileAppender fa = new FileAppender();
fa.setFile("d:/log.txt");
fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
fa.activateOptions(); \ ← activate the options
org.apache.log4j.Logger.getRootLogger().addAppender(fa);
方法 OptionHandler#activateOptions()
激活之前通过调用选项设置器设置的选项。
我已经使用 ConsoleAppender 在 log4j 记录器上创建了一个记录器。 代码如下,
public class AppLogger{
static {
ConsoleAppender ca = new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
org.apache.log4j.Logger.getRootLogger().addAppender(ca);
}
public AppLogger(Class classname) {
logger = LoggerFactory.getLogger(classname);
}
public void debug(String message){
logger.debug(message);
}
...
...
}
我还没有使用 log4j.properties 文件,因为我不确定把它放在哪里。上面的代码工作正常并在控制台上正确记录。现在我想将其更改为与 FileAppender 一起使用。
我简单地更新了静态构造函数如下,
FileAppender fa = new FileAppender();
fa.setFile("d:/log.txt");
fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
org.apache.log4j.Logger.getRootLogger().addAppender(fa);
并添加了 fa
而不是 ca
。但是现在我收到了这个错误,
log4j:ERROR No output stream or file set for the appender named [null].
我不确定我缺少哪个 属性 来定义 File Appender。
您忘记激活选项:
FileAppender fa = new FileAppender();
fa.setFile("d:/log.txt");
fa.setLayout(new PatternLayout(PatternLayout.DEFAULT_CONVERSION_PATTERN));
fa.activateOptions(); \ ← activate the options
org.apache.log4j.Logger.getRootLogger().addAppender(fa);
方法 OptionHandler#activateOptions()
激活之前通过调用选项设置器设置的选项。