2013-11-20 49 views
0

我需要/web-inf/logs文件夹在我的日志文件,所以我想给的log4jlog4j的初始化之前设置系统属性

我在听众尝试这种代码的相对路径:

@Override 
public void contextInitialized(ServletContextEvent event) { 
    ServletContext context = event.getServletContext(); 
    System.setProperty("azraspinaRootPath", context.getRealPath("/")); 

} 

这个代码的log4j.xml文件

<rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy"> 
    <param name="FileNamePattern" value="${azraspinaRootPath}WEB-INF/logs23/hibernate-%d{yyyy-MM-dd}.gz" /> 
</rollingPolicy> 

和这行代码在web.xml:

<listener> 
    <listener-class>ir.raysis.azraspina.startup.servlet.StartupListener</listener-class> 
</listener> 

但似乎log4j的这个监听器之前初始化,因为它存储在home/web-inf/logs

我能做些什么,使这项工作我的日志文件?这可能是一个不好的做法,所以如果你知道在共享的tomcat中更好的做法,请告诉我。感谢

回答

1

希望这将帮助你

在web.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="log4j-webapp-demo" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <servlet> 
     <servlet-name>Log4JTestServlet</servlet-name> 
     <servlet-class>test.Log4JTestServlet</servlet-class> 
    </servlet> 
    <servlet> 
     <servlet-name>Log4JInitServlet</servlet-name> 
     <servlet-class>test.Log4JInitServlet</servlet-class> 
     <init-param> 
      <param-name>log4j-properties-location</param-name> 
      <param-value>WEB-INF/log4j.properties</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Log4JTestServlet</servlet-name> 
     <url-pattern>/test</url-pattern> 
    </servlet-mapping> 
</web-app> 

在课堂上,

import org.apache.log4j.Logger; 

import java.io.*; 
import java.sql.SQLException; 
import java.util.*; 

public class log4jExample{ 



/* Get actual class name to be printed on */ 
static Logger log = Logger.getLogger( 
log4jExample.class.getName()); 

public static void main(String[] args) 
throws IOException,SQLException{ 

log.debug("Hello this is an debug message"); 
log.info("Hello this is an info message"); 
} 
} 
+0

感谢。我会测试它并回复你 – MoienGK

相关问题