2

我有这个非常简单的 scala 应用程序。它所做的只是初始化一个记录器并执行一个 logger.info("Hello")。我在具有以下设置的类路径中有一个 log4j.properties 文件

# Root logger option
log4j.rootLogger=INFO, stdout

# Direct log messages to stdout
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{ABSOLUTE} %5p %c{1}:%L - %m%n

但是,当我尝试运行应用程序时。我收到错误 log4j:WARN No appenders could be found for logger (app.TestApp$)。log4j:WARN 请正确初始化 log4j 系统。

我错过了什么?但是,如果我在类路径中有 hadoop-core.jar,我会打印出日志(是的,里面也有一个 log4j)

4

2 回答 2

7

您的 log4J 配置文件不在类路径中,即使您认为是。解决这个问题最简单的方法是添加-Dlog4j.debugVM 参数,然后 Log4J 将跟踪它使用的算法来查找其配置:

scala -cp {yourclasspath} -Dlog4j.debug {yourscalaentrypoint}

不幸的是,当您运行 Scala 程序时,@Jens 的回答对您没有帮助,因为 Scala 不使用标准的 Java 系统属性来存储其类路径。当您需要打印出用于 Scala 程序的类路径时,您应该使用类似这种技术的东西。

于 2012-06-16T12:54:12.290 回答
1

听起来您的属性文件在类路径中找不到。打印出类路径(系统属性 java.class.path)以验证发生了什么。

于 2012-06-16T08:31:11.697 回答