web启动加载log4j

今天下午有点累,所以把以往工作中遇到的问题和自己解决的方法和大家共享一下

日志是每个工程必不可少的部分,而log4j大家也用的很熟了,有将调试信息打到控制台的,有的保存文件或数据库

在这里我给给大家讲一个log4j的用法,是在bs中如何加载到log4j的文件,并将调试信息记录下来

首先写好log4j文件

如下(比较简单),这是配置成每日递增的日志

log4j.rootLogger = error, dailyFile
log4j.appender.dailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyFile.File=dailyRollingFile.log
log4j.appender.dailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyFile.layout.ConversionPattern=%d (%c:%L)--%m%n

然后在web.xml中定义一个servlet

这里有2个参数,一个是log4j,这个参数是定义了log4j的位置

另外一个参数outputDir,这里是定义输出的日志目录(不用预先建立,会自动建立)

<servlet></servlet>

xml 代码
  1. <servlet>  
  2.   <servlet-name>SystemStartUp</servlet-name>  
  3.   <servlet-class>  
  4.    com.cnc.proud.servlet.SystemStartUp   
  5.   </servlet-class>  
  6.   <init-param>  
  7.    <param-name>log4j</param-name>  
  8.    <param-value>WEB-INF\classes\log4j.properties</param-value>  
  9.   </init-param>  
  10.   <init-param>  
  11.    <param-name>outputDir</param-name>  
  12.    <param-value>logs</param-value>  
  13.   </init-param>  
  14.   <load-on-startup>2</load-on-startup>  
  15.  </servlet>  

 

然后看看这个servlet,首先取得web.xml中的2个参数,并读取相应的配置信息,然后用PropertyConfigurator这个类加载

java 代码
  1. package proud.servlet;   
  2.   
  3. import java.io.FileInputStream;   
  4. import java.io.IOException;   
  5. import java.util.Properties;   
  6.   
  7. import javax.servlet.ServletConfig;   
  8. import javax.servlet.ServletContext;   
  9. import javax.servlet.ServletException;   
  10. import javax.servlet.http.HttpServlet;   
  11.   
  12. import org.apache.log4j.PropertyConfigurator;   
  13.   
  14. import com.cnc.proud.util.ServiceFactory;   
  15.   
  16. /**  
  17.  * 启动加载  
  18.  *   
  19.  * @author proud   
  20.  */  
  21. public class SystemStartUp extends HttpServlet {   
  22.   
  23.  private static final long serialVersionUID = 8421025842405267201L;   
  24.   
  25.  public void init(ServletConfig config) throws ServletException {   
  26.   super.init(config);   
  27.   ServiceFactory.init();   
  28.   String prefix = config.getServletContext().getRealPath("/");   
  29.   String file = config.getInitParameter("log4j");   
  30.   String filePath = prefix + file;   
  31.   String outputDir = config.getInitParameter("outputDir");   
  32.   
  33.   Properties props = new Properties();   
  34.   try {   
  35.    FileInputStream istream = new FileInputStream(filePath);   
  36.    props.load(istream);   
  37.    istream.close();   
  38.    String logFile = prefix + outputDir + "\\"  
  39.      + props.getProperty("log4j.appender.dailyFile.File");  
  40.    props.setProperty("log4j.appender.dailyFile.File", logFile);  
  41.    PropertyConfigurator.configure(props);  
  42.    System.out.println("启动日志成功!");  
  43.   } catch (IOException e) {  
  44.    System.out.println("启动日志失败!");   
  45.   }   
  46.  }   
  47. }   
  48.   

这个只是在发布工程的时候适用,调试程序的时候建议还是用console方式

并且记得在发布工程的时候把输出级别调高点,如error

 

你可能感兴趣的:(apache,Web,xml,log4j,servlet)