使用log4j在struts2应用程序中记录应用程序的开始和结束

时间:2014-02-14 05:23:16

标签: java log4j tomcat7

我想问一下我的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。

1 个答案:

答案 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配置。