2015-04-01 175 views
0

乾杯,如何將log4j.properties文件的路徑更改爲特定路徑?

我試圖將log4j.properties的文件路徑從/ WEB-INF/classes更改爲/ WEB-INF/lib。有什麼方法可以將其歸檔嗎? 我嘗試了上下文參數來設置路徑,但我沒有存檔我的目標。

<context-param> 
    <!-- specifiy <path> to a log4j.properties file to superseed shipped version --> 
    <param-name>LOG4J_PROPERTIES</param-name> 
    <param-value>/lib/log4j.properties</param-value> 
    </context-param> 

這些都是從tomcat7-stdout.2015-04-01.log輸出

----------> Parent Classloader: 
[email protected] 
. 
log4j: Trying to find [log4j.properties] using [email protected] class loader. 
log4j: Trying to find [log4j.properties] using ClassLoader.getSystemResource(). 
log4j: Could not find resource: [null]. 
[EL Info]: 2015-04-01 09:05:07.764--ServerSession(598705739)--EclipseLink, version: Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5 
[EL Info]: connection: 2015-04-01 09:05:08.246--ServerSession(598705739)--file:/C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/archive/WEB-INF/lib/ot-ads.jar_AdministrationStore_url=jdbc:sqlserver://WIN-500S3SD3IQB:1433;databaseName=ECR_user=ecr login successful 
started AS_BIZADMIN API Service 
log4j: Trying to find [log4j.xml] using context classloader WebappClassLoader 
    context: /DynamicLogService 
    delegate: false 
    repositories: 

我還試圖用一個監聽器:

<listener> 
<listener-class>com.company.ecm.appsrv.logging.impl.LoggingSetup</listener-class> 
</listener> 

,但不似乎改變了一切。

LoggingSetup.java:

package com.company.ecm.appsrv.logging.impl; 

import java.io.IOException; 
import java.io.InputStream; 
import java.util.Properties; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 

import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 

public class LoggingSetup 
implements ServletContextListener 
{ 
    @Override 
    public void contextDestroyed(ServletContextEvent sce) 
    { 
     // Nope 
    } 

    @Override 
    public void contextInitialized(ServletContextEvent sce) 
    { 
     ServletContext sctx = sce.getServletContext(); 
     Properties props = new Properties(); 
     InputStream ins = null; 

     try 
     { 
      ins = sctx.getResourceAsStream("/WEB-INF/lib/log4j.properties"); 
      if(ins == null) 
       throw new RuntimeException("Could not find log4j properties"); 
      props.load(ins); 
      String ctxName = sctx.getContextPath().substring(1); 
      props.put("contextname", ctxName); 
      PropertyConfigurator.configure(props); 
      Logger.getRootLogger().info("Loggin set up."); 
     } 
     catch(IOException ex) 
     { 
      ex.printStackTrace(); 
      sctx.log("Could not setup logging", ex); 
     } 
     finally 
     { 
      if(ins != null) 
      { 
       try { ins.close(); } catch(IOException ex) { /* ignored */ } 
      } 
     } 
    } 
} 

完整的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, 
Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd"> 

<web-app> 
<listener> 
<listener-class>com.company.ecm.appsrv.logging.impl.LoggingSetup</listener-class> 
</listener> 

    <context-param> 
    <!-- specifiy <path> to a log4j.properties file to superseed shipped version --> 
    <param-name>LOG4J_PROPERTIES</param-name> 
    <param-value>/lib/log4j.properties</param-value> 
    </context-param> 
    <listener> 
     <listener-class> 
       com.sun.xml.ws.transport.http.servlet.WSServletContextListener 
     </listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>jaxws</servlet-name> 
     <servlet-class> 
      com.sun.xml.ws.transport.http.servlet.WSServlet 
     </servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>jaxws</servlet-name> 
     <url-pattern>/services</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout>120</session-timeout> 
    </session-config> 
</web-app> 

回答

0

設置以下上下文PARAM:

<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>/WEB-INF/config/log4j/log4j.properties</param-value> 
    </context-param> 

不要忘記添加

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 
    </listener> 

in web.xml

+0

由於某種原因,執行後,我得到了404錯誤。我的服務已部署,但無法使用您的解決方案:| – Aebian 2015-04-01 09:02:02

+0

請將您完整的web.xml文件 – vijay 2015-04-01 09:27:43

+0

添加到startpost中。 – Aebian 2015-04-01 09:58:01

1

問題腸固定。我剛剛搞砸了Java代碼,這次我的主管回到了辦公室,幫助了我。謝謝你的幫助vijay。