【发布时间】:2015-02-24 16:19:34
【问题描述】:
我是 log4j 的新手,遇到以下问题。
在一个名为 Mailer 的类中,我声明了我的 log4j Logger 对象,以这种方式:
private static final org.apache.log4j.Logger logger = Logger.getLogger(Mailer.class);
然后我在类构造函数中添加了一个日志记录(以测试记录器是否正常工作),以这种方式:
public Mailer() {
super();
logger.debug("LOGGER IN ACTION !!! INTO Mailer CONSTRUCTOR !!!");
setTimeoper();
}
问题是当进入类构造器时,记录器似乎不能正常工作并且不打印我的消息,而是我得到这个记录器错误(进入控制台):
log4j:WARN No appenders could be found for logger (utility.Mailer).
log4j:WARN Please initialize the log4j system properly.
在我的项目中,我有一个 config 包,其中包含 log4j.properties 文件,其中包含显示 DEBUG 的简约内容log4j 语句进入控制台:
定义控制台附加程序
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
# now define the layout for the appender
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
# now map our console appender as a root logger, means all log messages will go to this appender
log4j.rootLogger = DEBUG, consoleAppender
我认为这是正确的,但我从未指定 log4j 必须这样做(我不知道我必须如何以及必须做什么)
我错过了什么?如何解决这个问题并正确配置 log4j?
Tnx
【问题讨论】:
-
log4j.properties如果未设置显式位置,则必须位于类路径的根目录。 -
@BoristheSpider 好的,如果我想将它放入配置包中,我该如何指定它?