struts2中配置log4j 案例

struts2中配置log4j 案例
最近在搞一个用struts2的小应用,一开始按照原始的java中log4j的方法配置未果,无奈与google大神沟通了好一阵子,得出如下方案:

首先导入log4j包到项目的WEB-INF/lib中
1,创建serverlet用来初始化log4j property 文件,加载log4j,
代码如下:
package utill;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import org.apache.log4j.PropertyConfigurator;

public class Log4jInitServlet extends HttpServlet{

    private static final long serialVersionUID = 1L;
   
    public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {          
    }
    public void init() throws ServletException {  
   
        System.setProperty("logPath", "C://Documents and Settings//jl60155//webIVR-workspace//ScriptMaint-WebVersion//logs//myLog.log");
        System.err.println("Log4j Servlet test Path: " + System.getProperty("logPath"));
      
        PropertyConfigurator.configure(getServletContext().getRealPath("/") + getInitParameter("configfile"));  
    } 
}

注: 以上log文件位置进行了hardcode, 在项目中应用可用读取属性文件动态加载.

2,配置web.xml,使web services启动时初始化第一步中创建的serverlet 类:
加入如下代码:

  
    log4j config file 
    utill.Log4jInitServlet 
     
        configfile 
        WEB-INF/log4j.properties 
   
 
      
    1 
 


3,创建log4j.properties文件:
内容如下:

#log4j.rootLogger=debug, A1
log4j.logger.ScriptMaint=debug, A1

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.file=${logPath}
log4j.appender.A1.DatePattern=yyyy-MM-dd'.log'
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss, SSS}[%c]-[%p] %m%n

注: 该文件位置取决于web.xml的配置位置, 这里根据项目需要定义了自己的logger,未使用rootLooger,(rootLooger会打印出应用框架中root级别的log信息,
这里是struts2核心jar包中定义的,我没有找到控制方法也不想去修改struts2 jar包,虽然是开源的,项目没那需要,故,使用了自定义的looger), 这里我们用${logPath}获取我们
在初始化的serverlet中设置的系统变量

4, action 中使用looger必要信息:
导入包:
import org.apache.log4j.Logger;
获取looger 付给我们自定义的logger变量:
private static Logger logger = Logger.getLogger("ScriptMaint");
在执行方法execute()中使用:
logger.debug("William Test LOG!");

到我们配置的log文件中查看,正常输出log信息,测试成功!

你可能感兴趣的:(struts2中配置log4j 案例)