Log4j配置每天生成

YOYO posted @ 2008年11月06日 20:27 in 【Java EE】 with tags 日志 log4j , 3409 阅读

研究了好久……先在apache.org上下载一个log4j-1.2.15.jar,导入WEB-INF/lib目录下;
写一个log4j.properties,放入src目录,该内容如下:

log4j. rootLogger=INFO,FILE
log4j. addivity. org. apache= true

# FILE
log4j. appender. FILE=org. apache. log4j. DailyRollingFileAppender
log4j. appender. FILE. Encoding=GBK
log4j. appender. FILE. Threshold=INFO,DEBUG
log4j. appender. FILE. File=WEB-INF\\logs\\log
log4j. appender. FILE. DatePattern= '_'yyyyMMdd '.log'
log4j. appender. FILE. layout=org. apache. log4j. PatternLayout
log4j. appender. FILE. layout. ConversionPattern=%d {yyyy-MM-dd HH\:mm\:ss,SSS } [%p ] %m [%c ]%n

写一个servlet,加载log4j,并使这些文件保存到服务器目录下:

  1. package bootcamp. common. 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.ServletException;
  9. import javax.servlet.http.HttpServlet;
  10.  
  11. import org.apache.log4j.Logger;
  12. import org.apache.log4j.PropertyConfigurator;
  13.  
  14. public class Log4jInitServlet extends HttpServlet {
  15.  
  16.         @Override
  17.         public void init (ServletConfig config ) throws ServletException {
  18.         String prefix = config. getServletContext ( ). getRealPath ( "/" );
  19.         String file = config. getInitParameter ( "log4j" );
  20.         String filePath = prefix + file;
  21.         Properties props = new Properties ( );
  22.         try {
  23.             FileInputStream istream = new FileInputStream (filePath );
  24.             props. load (istream );
  25.             istream. close ( );
  26.  
  27.             String logFile = prefix + props. getProperty ( "log4j.appender.FILE.File" ); //设置路径
  28.             props. setProperty ( "log4j.appender.FILE.File",logFile );
  29.            
  30.             PropertyConfigurator. configure (props ); //装入log4j配置信息
  31.            
  32.             Logger logger = Logger. getLogger (Log4jInitServlet. class. getName ( ) );     
  33.            
  34.             logger. info ( "创建日志文件:" + props. getProperty ( "log4j.appender.FILE.File" ) );
  35.            
  36.         } catch ( IOException e ) {
  37.             toPrint ( "Could not read configuration file [" + filePath + "]." );
  38.             toPrint ( "Ignoring configuration file [" + filePath + "]." );
  39.         }
  40.         }
  41.        
  42.     public static void toPrint ( String content ) {
  43.         System. out. println (content );
  44.     }
  45.  
  46. }

配置web.xml

<servlet>
    <description>Log4j init Servlet </description>
    <display-name>Log4j init Servlet </display-name>
    <servlet-name>Log4jInitServlet </servlet-name>
    <servlet-class>bootcamp.common.servlet.Log4jInitServlet </servlet-class>
    <init-param>
            <param-name>log4j </param-name>
            <param-value>WEB-INF/classes/log4j.properties </param-value>
    </init-param>
    <load-on-startup>1 </load-on-startup>
</servlet>

接着,在需要记录日志的类,先创建一个记录器变量

static Logger logger = Logger. getLogger (类名. class. getName ( ) );

 

如果不设成static,可以写作

Logger logger = Logger. getLogger ( this. getClass ( ). getName ( ) );

在记录时直接调用以下各种方法需要记录的信息即可。

logger. debug ( "调试信息." );
logger. info ( "一般信息." );
logger. warn ( "警告信息." );
logger. error ( "错误信息." );
logger. fatal ( "致命信息." );

※ 不过这种每天生成日志的方法,要从第二天开始才会按照log_yyyyMMdd.log的格式保存。

附录,完整的log4j.properties(使用控制台、数据库、文件保存日志),配解释:

  1. # level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
  2. log4j. rootLogger=DEBUG,CONSOLE,DATABASE,A1
  3. log4j. addivity. org. apache= true
  4.  
  5. # 应用于控制台
  6. log4j. appender. CONSOLE=org. apache. log4j. ConsoleAppender
  7. # 本处设置为 "INFO"以上级别在控制台输出 (默认情况使用rootLogger中的设置 )
  8. log4j. appender. CONSOLE. Threshold=INFO
  9. log4j. appender. CONSOLE. Target= System. out
  10. log4j. appender. CONSOLE. Encoding=GBK
  11. log4j. appender. CONSOLE. layout=org. apache. log4j. PatternLayout
  12. log4j. appender. CONSOLE. layout. ConversionPattern= [framework ] %d - %c -%-4r [%t ] %-5p %c %x - %m%n
  13.  
  14. # 用于数据库
  15. log4j. appender. DATABASE=org. apache. log4j. jdbc. JDBCAppender
  16. log4j. appender. DATABASE. URL=jdbc:oracle:thin:@ 90.0 .12 .20: 1521:ORCL
  17. log4j. appender. DATABASE. driver=oracle. jdbc. driver. OracleDriver
  18. log4j. appender. DATABASE. user=Nation
  19. log4j. appender. DATABASE. password= 1
  20. # 本处设置为 "WARN"以上级别在数据库存储 (默认情况使用rootLogger中的设置 )
  21. log4j. appender. DATABASE. Threshold=WARN
  22. log4j. appender. DATABASE. sql=INSERT INTO T_LOG4J (stamp,thread,infolevel, class,messages ) VALUES ( '%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m' )
  23. # 写入数据库中的表LOG4J的Message字段中,内容%d(日期)%c: 日志信息所在地(类名)%p: 日志信息级别%m: 产生的日志具体信息 %n: 输出日志信息换行
  24. log4j. appender. DATABASE. layout=org. apache. log4j. PatternLayout
  25. log4j. appender. DATABASE. layout. ConversionPattern= [framework ] %d - %c -%-4r [%t ] %-5p %c %x - %m%n
  26.  
  27. # 每天新建日志
  28. log4j. appender. A1=org. apache. log4j. DailyRollingFileAppender
  29. log4j. appender. A1. File=C:/log4j/website. log
  30. log4j. appender. A1. Encoding=GBK
  31. log4j. appender. A1. Threshold=DEBUG
  32. log4j. appender. A1. DatePattern= '.'yyyy-MM-dd
  33. log4j. appender. A1. layout=org. apache. log4j. PatternLayout
  34. log4j. appender. A1. layout. ConversionPattern=%d {ABSOLUTE } %5p %c { 1 }:%L : %m%n

log4j.rootLogger 的等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DEBUG信息不会被显示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值