【问题标题】:How to see log4J messages in console如何在控制台中查看 log4J 消息
【发布时间】:2013-03-09 19:03:18
【问题描述】:

我在 NetBeans 中有一个应用程序,我正在尝试使用调试消息来记录方法调用,例如:

public class PersonService {

     protected static Logger logger = Logger.getLogger(PersonService.class.getName());

     public void add(Person person) { 
        logger.debug("PersonService.add called");
        ...
     } 

我的log4j配置文件在项目的WEB-INF文件夹中,如下:

log4j.rootLogger=DEBUG,console

#Console Appender 
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%5p] [%t %d{hh:mm:ss}] (%F:%M:%L) %m%n

我知道这应该将调试消息打印到控制台,但到目前为止我什么也没得到。

我也在输出中收到这个:

log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.

有什么想法吗?

【问题讨论】:

  • 您的应用程序是否找到了配置文件? WEB-INF 通常不在类路径中。如果找不到配置文件,则会将错误消息写入标准输出,您是否看到类似的内容?
  • 我认为这可能是问题所在。如何告诉应用程序在哪里可以找到配置文件?有问题的消息详细信息。
  • 我更喜欢使用Logger.getLogger(PersonService.class) 而不是Logger.getLogger(PersonService.class.getName())

标签: java configuration log4j


【解决方案1】:

log4j.properties 文件放入WEB-INF/classes,你应该将它保存在类路径中。

另一种(更正确的方法)是将您的所有.properties 文件保存在单独的属性文件夹中,该文件夹的内容会在创建网络存档期间自动移动到WEB-INF/classes。在 Eclipse 中,这种文件夹称为 构建路径上的源文件夹

【讨论】:

  • 它正在工作。感谢 zvzdhk 和其他受访者。虽然没想到这么多消息!-)
  • 不过只有一件事:我使用的是 NetBeans 而不是 Eclipse。但是我在 WEB-INF 文件夹中有 Spring.properties 并且可以识别它。那么为什么不应该识别 log.4j 属性呢?
  • @MrMorgan 我猜这取决于具体的库 - 有些人试图在 WEB-INF 中找到配置文件,另一个 - 在类路径中。
  • 也许我应该改用 Eclipse!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-01
  • 1970-01-01
  • 2018-12-03
  • 2011-08-26
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多