如何在Eclipse中设置log4j.properties?

6
我正在尝试运行这个例子,但我在配置方面遇到了一些问题。
我复制了log4j-jms.propertiesjndi.propertiesLog4jJMSAppenderExample.java
ProjectJMS
|
\_ src
|   \_ Log4jJMSAppenderExample.java
|   \_ jndi.propeties
\_ log4j-jms.properties

我需要在控制台中运行activemq

当我运行我的示例时,出现了以下情况:

log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.`PropertyConfigurator.configure("log4j-jms.properties");`

所以我添加了。
PropertyConfigurator.configure("log4j-jms.properties");

现在我可以在Eclipse控制台中看到日志,但仍带有此警告。
log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
2012-08-13 10:21:44,741 INFO  Log4jJMSAppenderExample - Test log
Received log [INFO]: Test log

在控制台使用activemq时,我收到了以下信息:

 WARN | Transport Connection to: tcp://127.0.0.1:2005 failed: java.net.SocketException: Connection reset

为什么会收到这些警告?
  1. Are my imports wrong?

    import javax.jms.Connection;
    import javax.jms.Message;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageListener;
    import javax.jms.Session;
    
    import org.apache.activemq.ActiveMQConnectionFactory;
    import org.apache.activemq.command.ActiveMQObjectMessage;
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    import org.apache.log4j.spi.LoggingEvent;
    
  2. Are my files in wrong place?

  3. How to set configuration file in Eclipse? Without using PropertyConfigurator.configure("log4j-jms.properties");? There is no line like this in example I follow.

3个回答

14

你的log4j.properties文件应该放在src文件夹里。这样,Log4J就会自动配置,不需要你编写代码。


1
我移动了这个文件,并在VM参数中添加了-Dlog4j.configuration=log4j-jms.properties。现在可以工作了,谢谢。 - alicjasalamon
为什么需要 log4j-jms.properties?你根本不需要它。log4j.properties 是 Log4J 的系统默认配置属性。 - Buhake Sindi
我在问题中犯了一个错误。我将我的文件命名为 log4j-jms.properties,而没有 log4j.properties。我可以将其重命名,但它仍然可以正常工作。 - alicjasalamon
1
但是,如果系统范围内的Log4J默认属性有效,则无需创建另一个属性文件。 - Buhake Sindi
@BuhakeSindi - 你能帮我解决一个相关的问题吗?- https://stackoverflow.com/questions/23278607/using-simple-log4j-properties-in-my-java-code - Erran Morad

2
  1. 没有关于导入的内容;

  2. 这与文件位置无关,正如您看到的这条消息“log4j:WARN No appenders could be found for logger...”,请检查您的log4j配置文件的内容。以下是一个演示:

    log4j.rootLogger=INFO, myConsoleAppender log4j.appender.myConsoleAppender=org.apache.log4j.ConsoleAppender log4j.appender.myConsoleAppender.layout=org.apache.log4j.PatternLayout log4j.appender.myConsoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

  3. 默认的log4j配置文件是“log4j.properties”,有人说应该将其放置在src文件夹中。


就像我之前所说的那样,我从教程中复制了“log4j.properties”,所以它可以正常工作。在向VM添加额外参数后,我没有收到任何警告。 - alicjasalamon

1
根据您的项目结构,没有log4j-jms.properties文件。有log4j.properties文件。因此,请更改您的log4j属性文件名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接