任何人都可以告诉我如何使用log4j.properties ouside war文件?

时间:2014-03-24 06:11:46

标签: java log4j

我是log4j的新手。我有一个servlet Log4jInit,它在启动时加载。

public class Log4jInit extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public void init(ServletConfig config) {
        System.out.println("Log4J for entities initializing");
        ServletContext context = getServletContext();
        String log4jLocation = context.getInitParameter("log4jConfigLocation");
        PropertyConfigurator.configure(log4jLocation);
    }
}

我已按照以下方式宣布我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>com.zeomega.jiva_product_entities</display-name>
<servlet>
    <servlet-name>log4j-init</servlet-name>
    <servlet-class>com.zeomega.jiva_product_entities.Log4jInit</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>${HOME}/Log4J/log4j.properties</param-value> 
</context-param>
<servlet-mapping>
  <servlet-name>standard-real-time</servlet-name>
  <url-pattern>/restful/*</url-pattern>
</servlet-mapping>
</web-app>

但它会抛出错误,说我没有在我正在使用的Java类中初始化logger。我的猜测是它没有拿起log4j.properties文件路径。任何人都可以帮我知道如何在战争之外导入log4j文件吗?

我在运行应用程序时面临以下错误:

log4j:WARN No appenders could be found for logger (com.zeomega.jiva_product_entities.JivaProductEntity).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info

1 个答案:

答案 0 :(得分:0)

请尝试以下从LOG4J 1.2 website复制的程序:

  
      
  1. 将资源字符串变量设置为log4j.configuration系统属性的值。指定的首选方法   默认初始化文件是通过log4j.configuration系统实现的   属性。如果系统属性log4j.configuration不是   define,然后将字符串变量资源设置为其默认值   &#34; log4j.properties&#34;
  2.   
  3. 尝试将资源变量转换为URL。
  4.   
  5. 如果资源变量无法转换为URL,例如由于MalformedURLException,则从中搜索资源   classpath通过调用   org.apache.log4j.helpers.Loader.getResource(resource,Logger.class)   返回一个URL。注意字符串&#34; log4j.properties&#34;   构成格式错误的网址。
  6.   

E.g。对于tomcat:

export TOMCAT_OPTS="-Dlog4j.configuration=foobar.txt"

其中foobar.txt是配置文件的路径。