我想问一下我的Struts2应用程序中的log4j用法。我在我的struts2应用程序中使用log4j。这是我的log4j.xml
。
<appender name="APPLICATION" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="${appRootPath}/application_"/>
<param name="DatePattern" value="yyyy-MM-dd'.log'"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c %m%n"/>
</layout>
</appender>
<appender name="JUNIT" class="org.apache.log4j.FileAppender">
<param name="file" value="application.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c %m%n"/>
</layout>
</appender>
<logger name="co.jkk.tds">
<level value="DEBUG"/>
<appender-ref ref="JUNIT"/>
<appender-ref ref="APPLICATION"/>
</logger>
我使用ServletContextListener将这个log4j xml配置到我的应用程序。这是我的监听器类,
public class Log4jInit implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
CommonUtil.methodInfoLog(this.getClass(), "contextDestroyed",
MethodAction.Start);
CommonUtil.methodInfoLog(this.getClass(), "contextDestroyed",
MethodAction.Finish);
}
@Override
public void contextInitialized(ServletContextEvent e) {
ServletContext ctx = e.getServletContext();
System.setProperty("appRootPath", ctx.getRealPath("/logs"));
String prefix = ctx.getRealPath("/");
String file = "WEB-INF" + File.separator + "classes" + File.separator
+ "log4j.xml";
DOMConfigurator.configure(prefix + file);
}
}
我的问题是如何在我的Struts2应用程序中添加应用程序开始和结束日志消息?我正在使用Tomcat7和Struts2。
答案 0 :(得分:0)
它与struts2无关。在上下文侦听器中初始化log4j的方式看起来是正确的。确保已配置web.xml
以通过将<listener>
元素添加到web.xml来调用上下文侦听器。
<listener>
<listener-class>your.package.Log4jInit</listener-class> <!-- Use fully qualified name of y our Log4jInit class. -->
</listener>
之后,您可以使用log4j记录器记录上下文开始和结束等事件。
请注意 - 我没有分析你的log4j appender和logger配置。