【发布时间】:2016-04-07 22:15:24
【问题描述】:
我正在尝试在我的 Java 应用程序(没有网络应用程序)中使用 log4j。因此,我直接在我的 /src 文件夹中添加了配置文件。
log4j.properties
log4j.rootLogger=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
我的主类在一个带有子命名空间的包中,我在其中尝试如下记录:
final static Logger logger = Logger.getLogger(MainClass.class);
public static void main(String[] args) {
//BasicConfigurator.configure();
logger.warn("some warning");
}
但我仍然收到一条错误消息,我不知道该怎么办。您会看到上面的注释行 BasicConfigurator。据我所知,应该在不调用该行的情况下读取 log4j.properties,对吧?
log4j:WARN 找不到记录器的附加程序 (在.company.project.poi.MainClass)。 log4j:WARN 请初始化 log4j 系统正常。 log4j:WARN 见 http://logging.apache.org/log4j/1.2/faq.html#noconfig 了解更多信息。
【问题讨论】:
-
你使用什么样的构建系统?
-
没有特定的构建系统,只是 Eclipse 中的一个简单的 java 项目。构建路径中的依赖项设置正确。如果我使用上面的那一行,那么我会在控制台上看到输出,但是不会从属性文件中读取配置。
-
属性文件应该放在根文件夹而不是src文件夹。那可能是你的问题。您可能会对此线程感兴趣:stackoverflow.com/questions/7390521/…
-
我假设您的文件夹 src 没有作为资源文件夹添加到您的类路径中。您是否指定了资源(参见here)?
-
如果文件在 src 文件夹中,则在执行时将文件复制到 /bin 文件夹。如果我将文件移动到根文件夹,则不会复制它。两种方式的错误都是一样的。