2

我想将 Log4J 日志集成到我的 Java 应用程序中,将信息写入日志文件并在控制台上显示信息。不幸的是,我在实现这一目标时遇到了一些麻烦。我在 Win 7 上使用 Eclipse Juno。

我的 log4j.properties 文件:

#configure logfile
log4j.appender.logfile = org.apache.log4j.RollingFileAppender
log4j.appedner.logfile.File = MyAppLog.log
log4j.appender.logfile.Append = true
log4j.appender.logfile.layout = org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern = %-5p %d [%t][%F:%L] : %m%n

#configure 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 = %-5p %d [%t][%F:%L] : %m%n

log4j.rootLogger = debug, logfile, stdout

我相信以上内容遵循了关于该主题的其他一些公认答案的模式。

我用 VM 参数指定了这个 log4j.properties 文件的位置:

-Dlog4j.configuration=file:///${workspace_loc}\path\to\file\log4j.properties

我在我的 java 类中实例化记录器:

static Logger logger = Logger.getLogger(MyApp.class.getName());

记录一个字符串:

logger.info("barfoo");

此配置在启动时会导致以下警告/错误:

log4j:WARN File option not set for appender [logfile].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
log4j:ERROR No output stream or file set for the appender named [logfile]

它不生成日志文件。但是,控制台日志记录似乎工作得很好。

4

1 回答 1

10

这听起来很愚蠢 - 你有一个错字。你有log4j.appedner.logfile.File代替log4j.appender.logfile.File (注意'n'和'd'被切换)。这就是为什么它抱怨你没有设置文件的原因。

于 2013-08-12T21:53:08.657 回答