如何修复Tomcat中的log4j警告信息[英] How can I fix log4j warning messages in Tomcat

本文是小编为大家收集整理的关于如何修复Tomcat中的log4j警告信息的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。

问题描述

我是JMS和Activemq的新手.使用Google和stack Overflow帮助我将消息从我的Java程序发送到Activemq使用以下代码.

  package PackageName;
  import java.io.IOException;
  import javax.jms.Connection;
  import javax.jms.ConnectionFactory;
  import javax.jms.Queue;
  import javax.jms.Session;
  import javax.jms.TextMessage;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import org.apache.activemq.ActiveMQConnectionFactory;
 //@SuppressWarnings("serial")
 public class MessageProducer extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
        throws ServletException, IOException {
    try {
        //created ConnectionFactory object for creating connection 
        ConnectionFactory factory = new ActiveMQConnectionFactory("admin","admin","tcp://localhost:61617");
        //Establish the connection
        Connection connection = factory.createConnection();
        Session session = connection.createSession(false,
        Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue("MessageTesing123");
        //Added as a producer
        javax.jms.MessageProducer producer = session.createProducer(queue);
        // Create and send the message
        TextMessage msg = session.createTextMessage();
        msg.setText("TestMessage3");
        producer.send(msg);
    } catch (Exception e) {
        // TODO: handle exception
    }
}
}

如果我使用Apache Tomcat运行此.java文件,则可以正常工作,但是我会收到以下警告.

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.

我该如何修复.

谢谢.

推荐答案

这不是ActiveMQ警告;这是log4j警告.

  1. 如果您在Tomcat跑步,请获得标准log4j.properties或 log4j.xml文件.

  2. 为您的环境配置它.

  3. 将日志文件放在<TOMCAT>/webapps/<MyProject>/WEB-INF/classes上,或放入 在相同的相对路径下的战争文件:/WEB-INF/classes

其他推荐答案

No appenders could be found for logger ...

表示您没有与rootlogger有关的记录仪.这意味着WireFormatNogotiator试图记录某些内容,但没有发现记录器.既不是控制台,也不是其他任何东西.

例如,在我的项目中,我记录了来自package com.foo的所有记录语句,因此我的属性看起来像:

log4j.logger.com.foo=DEBUG, MYPROJECT
... 

和以后的我有

 log4j.appender.MYPROJECT=org.apache.log4j.RollingFileAppender

和其他RollingFileAppender的详细信息. log4j.properties应该在您的课程中.典型的位置是Web-Inf/类.

本文地址:https://www.itbaoku.cn/post/1575133.html

问题描述

I am new to JMS and Activemq.using Google and stack overflow help I am sending messages from my Java program to Activemq using the following code.

  package PackageName;
  import java.io.IOException;
  import javax.jms.Connection;
  import javax.jms.ConnectionFactory;
  import javax.jms.Queue;
  import javax.jms.Session;
  import javax.jms.TextMessage;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import org.apache.activemq.ActiveMQConnectionFactory;
 //@SuppressWarnings("serial")
 public class MessageProducer extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
        throws ServletException, IOException {
    try {
        //created ConnectionFactory object for creating connection 
        ConnectionFactory factory = new ActiveMQConnectionFactory("admin","admin","tcp://localhost:61617");
        //Establish the connection
        Connection connection = factory.createConnection();
        Session session = connection.createSession(false,
        Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue("MessageTesing123");
        //Added as a producer
        javax.jms.MessageProducer producer = session.createProducer(queue);
        // Create and send the message
        TextMessage msg = session.createTextMessage();
        msg.setText("TestMessage3");
        producer.send(msg);
    } catch (Exception e) {
        // TODO: handle exception
    }
}
}

If I run this .java file using Apache Tomcat,it's working fine but I am getting the following warnings.

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.

How can I fix this.

Thanks.

推荐答案

This is not an ActiveMq warning; it's a log4j warning.

  1. If you're running in Tomcat, get a standard log4j.properties or log4j.xml file.

  2. Configure it for your environment.

  3. Place log file at <TOMCAT>/webapps/<MyProject>/WEB-INF/classes, or, put in WAR file under same relative path: /WEB-INF/classes

其他推荐答案

No appenders could be found for logger ...

Means you dont have a logger relating to a rootLogger. Which means, WireFormatNegotiator is trying to log something, but finds no logger. Neither console nor file or anything else.

For example, in my project I log all logging statements from package com.foo so my properties looks like :

log4j.logger.com.foo=DEBUG, MYPROJECT
... 

and later on I have

 log4j.appender.MYPROJECT=org.apache.log4j.RollingFileAppender

and other RollingFileAppender details. The log4j.properties should be in your class path. Typical location is web-inf/classes.