Ago*_*noX 12 java log4j consoleappender
我遇到了log4j的问题ConsoleAppender:
如果我像这样初始化它:
ConsoleAppender ca = new ConsoleAppender();
ca.setLayout(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
Run Code Online (Sandbox Code Playgroud)
它会出错并打破日志记录.
错误输出:
log4j:ERROR没有名为[null]的appender的输出流或文件集.
如果我像这样初始化它工作正常:
ConsoleAppender ca = new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个问题?我无法在Bugzilla存储库中找到它,但如果它实际上是一个问题,那将是非常明显的!
也许我在找错了地方?
相关代码:
import org.apache.log4j.*;
public class ConsoleAppenderIssue {
private static Logger logger = Logger.getLogger(ConsoleAppenderIssue.class);
public static void main(String [] args) {
ConsoleAppender ca = new ConsoleAppender();
ca.setLayout(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN));
logger.addAppender(ca);
logger.info("log something");
}
}
Run Code Online (Sandbox Code Playgroud)
ska*_*man 17
如果您查看 ConsoleAppender 的源代码,您可以看到为什么会发生这种情况:
public ConsoleAppender(Layout layout) {
this(layout, SYSTEM_OUT);
}
public ConsoleAppender(Layout layout, String target) {
setLayout(layout);
setTarget(target);
activateOptions();
}
Run Code Online (Sandbox Code Playgroud)
您可以看到ConsoleAppender(Layout)传递SYSTEM_OUT作为目标,也可以activateOptions在设置布局和目标后调用.
如果你setLayout自己使用,那么你还需要明确设置目标和调用activateOptions.
| 归档时间: |
|
| 查看次数: |
17833 次 |
| 最近记录: |