我想将 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]
它不生成日志文件。但是,控制台日志记录似乎工作得很好。