乾杯,如何將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>
由於某種原因,執行後,我得到了404錯誤。我的服務已部署,但無法使用您的解決方案:| – Aebian 2015-04-01 09:02:02
請將您完整的web.xml文件 – vijay 2015-04-01 09:27:43
添加到startpost中。 – Aebian 2015-04-01 09:58:01