spring配置log4j

1.配置基本的springMVC+hibernate环境。网上有很多这种例子。

2.需要使用log4j,首先就要在web.xml中配置log4j.方法有两种:

         1.我们可以自己写一个servlet,服务器启动的时候自动加载,让该servlet加载log4j的配置文件(properties或者xml文件),这种方法百度百科讲log4j有详细说明。

         2.加入spring自带的关于log4j的监听器。个人推荐使用第二种方法。

          在web.xml文件中的配置为:

          

[html]  view plain copy
  1.        <!-- Spring的log4j监听器****************************************** -->  
  2. <!-- 设置log4j配置文件路径 -->  
  3. <context-param>  
  4.     <param-name>log4jConfigLocation</param-name>  
  5.     <param-value>WEB-INF/log4j.properties</param-value>  
  6. </context-param>  
  7. <!-- 开一条watchdog线程每60秒扫描一下配置文件的变化 -->  
  8. <context-param>  
  9.     <param-name>log4jRefreshInterval</param-name>  
  10.     <param-value>600000</param-value>  
  11. </context-param>  
  12. <listener>  
  13.     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>  
  14. </listener>   
  15. <!-- ************************************************** -->  
3. 但是为了后期配置log4j的便利,这里还需药设置一个webAppRootKey,所以还需在web.xml文件中加入这样一段,后面会对其进行解释:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <context-param>  
  2.     <param-name>webAppRootKey</param-name>  
  3.     <param-value>myWebApp.root</param-value>  
  4. </context-param>  


4.现在服务器启动就能够进行日志监听了,但是我们还得进行log4j的详细配置,这里使用的是一个log4j.properties文件。放在WEB-INF文件夹下。其内容为:

[plain]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #log4j.rootLogger = [ level ] , appenderName, appenderName, ...  
  2. log4j.rootLogger = ALL, console,allR  
  3.   
  4. #branch logger  
  5. log4j.logger.InfoLogger = INFO,infoR  
  6. log4j.logger.ErrorLogger = ERROR,errorR  
  7.   
  8. log4j.logger.org.springframework=ERROR  
  9. log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN  
  10. log4j.logger.org.hibernate=DEBUG  
  11.   
  12. #console   
  13. log4j.appender.console = org.apache.log4j.ConsoleAppender  
  14. log4j.appender.console.layout = org.apache.log4j.PatternLayout  
  15. log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n  
  16.   
  17. #infoR  
  18. log4j.appender.infoR = org.apache.log4j.RollingFileAppender  
  19. log4j.appender.infoR.File =${myWebApp.root}/logs/info/infoLog.txt  
  20. log4j.appender.infoR.MaxFileSize = 50MB  
  21. log4j.appender.infoR.MaxBackupIndex = 1000  
  22. log4j.appender.infoR.layout = org.apache.log4j.PatternLayout  
  23. log4j.appender.infoR.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n  
  24.   
  25. #errorR  
  26. log4j.appender.errorR = org.apache.log4j.RollingFileAppender  
  27. log4j.appender.errorR.File =${myWebApp.root}/logs/error/errorLog.txt  
  28. log4j.appender.errorR.MaxFileSize = 50MB  
  29. log4j.appender.errorR.MaxBackupIndex = 1000  
  30. log4j.appender.errorR.layout = org.apache.log4j.PatternLayout  
  31. log4j.appender.errorR.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n  
  32.   
  33. #allR  
  34. log4j.appender.allR = org.apache.log4j.RollingFileAppender  
  35. log4j.appender.allR.File =${myWebApp.root}/logs/all/allLog.txt  
  36. log4j.appender.allR.MaxFileSize = 500MB  
  37. log4j.appender.allR.MaxBackupIndex = 1000  
  38. log4j.appender.allR.layout = org.apache.log4j.PatternLayout  
  39. log4j.appender.allR.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n  
说明:

   在这个配置文件中,如果有不懂其中内容的同学,情查看百度百科,对log4j.properties的配置有详细的说明.

   我在配置文件中指明,对于所有的日志信息都回打印到控制台,同时输出到/logs/all/allLog.txt文件中。

   配置文件中除了一个根记录器(rootLogger),我还配了两个分支(InfoLogger和ErrorLogger),这三个logger的内容分别写到,与对应的日志文件对应为:

    rootLogger  -->    /logs/all/allLog.txt

    InfoLogger   -->       /logs/info/infoLog.txt

    ErrorLogger  -->      /logs/error/errorLog.txt
   其中infoLogger,和ErrorLogger因为是继承于rootLogger,所以他们的内容也会同时输出到/logs/all/allLog.txt文件中

  在该配置文件中myWebApp.root就是我们在第三步中配置的内容。名字可以自己更改。在第三步配置webAppRootKey还有一个作用就是避免在同一个web容器中(例如tomcat)有多个web项目而产生混乱。


5.如果是用eclipse进行开发,还需要在WebContenet(如果是myeclipse就是WebRoot)下建立好文件结构:


6.此时就可以启动该项目了。

启动后到服务器下找到该项目,在该项目下可以发现有一个logs文件夹,但是只有allLog.txt中有内容,其余的两个文件是空的。因为我errorLog和infoLog都不是从根记录器来的,这两个文件是通过调用errorLog和infoLog才会记录内容的。下面就来看一下例子。

    1.在src下新建util包,同时在util包下面新建LogRecord类:

    

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package utils;  
  2.   
  3. import org.apache.log4j.Logger;  
  4. public class LogRecord {  
  5.     private static Logger info = Logger.getLogger("InfoLogger");  
  6.     private static Logger error = Logger.getLogger("ErrorLogger");  
  7.     public LogRecord(){}  
  8.       
  9.     /** 
  10.      * 一般情况记录到/logs/infoLog.txt 
  11.      */  
  12.     public static void info(String infomation){  
  13.         info.info(infomation);  
  14.     }  
  15.       
  16.     /** 
  17.      * 错误信息记录到/logs/errorLog.txt 
  18.      */  
  19.     public static void error(String infomation){  
  20.         error.error(infomation);  
  21.     }  
  22. }  
在这个工具类中,我分别载入了info记录器和error记录器。只要通过这两个记录器记录日志,那么日志肯定就会根据log4j.properties的配置,写入到/logs/info/infoLog.txt和/logs/error/errorLog.txt中。下面来写一个servlet调用这个工具类。

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. package servlet;  
  2.   
  3. import java.io.IOException;  
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.annotation.WebServlet;  
  6. import javax.servlet.http.HttpServlet;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. public class servletDemo1 extends HttpServlet {  
  11.     public servletDemo1() {  
  12.         super();  
  13.     }  
  14.   
  15.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  16.         doPost(request, response);  
  17.     }  
  18.   
  19.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  20.         //向控制台和/logs/info/infoLog.txt中写内容  
  21.         LogRecord.info("用户登录成功!");  
  22.           
  23.         //向控制台和/logs/error/errorLog.txt中写内容  
  24.         LogRecord.error("这个用户长得太丑了!");  
  25.     }  
  26.   
  27. }  

现在假设我的项目名称为webApp.那么此时通过浏览器访问 http://localhost:8080/webApp/servletDemo1

现在再到/logs/文件夹下面去看,可以看到info文件和error文件中都已经有内容了。

在开发过程中,如果需要有日志记录,就可以直接调用静态方法LogRecord.info(String str)或者LogRecord.error(String str)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值