关于log4j和commons-logging

 

Log4j用法  
将Log4j和commons.logging的jar包加到构建路径中(classpath),我出现过这么一个问题javaEE5自带的commons.logging不可用后来发现路径应修改为:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
然后写一个log4j.properties 文件放在根路径。
log4j.properties 文件完整的示例如下:
##定义rootLogger,级别为DEBUG,输出地为stdout
       log4j.rootLogger=DEBUG,stdout
       ##定义用于记录错误信息的Logger:ErrorLog
       log4j.logger.ErrorLog=ERROR , errLog
       ##定义用于记录业务信息的Logger:BusinessLog
       log4j.logger.BusinessLog=INFO, businessLog
      
## 设置 stdout ##
       log4j.appender. stdout =org.apache.log4j.ConsoleAppender
##输出到控制台
log4j.appender.stdout.Target=System.out
##设置为灵活的布局模式。
log4j.appender. stdout.layout= org.apache.log4j.PatternLayout
       ##设置转换模式。类似于C中输出函数(printf())中的转换模式。
log4j.appender. stdout.layout.ConversionPattern=%r [%t] %-5p %C.%M() - %m%n
                    
## 设置 errLog ##
##指定Appender 名称为errLog,并且每天产生一个日志文件。
       log4j.appender.errLog= org.apache.log4j.DailyRollingAppender
       ##指定输出地为文件error.log
       log4j.appender.errLog.file=error.log
       ##指定日期格式
       log4j.appender.errLog.DatePattern=’.’yyyy-MM-dd
       log4j.appender.errLog.layout=org.apache.log4j.PatternLayout
       log4j.appender.errLog.ConversionPattern= %p -- %d{yyyy-MM-dd HH:mm:ss,SSS} - %c – Method:%m%n
## 设置 businessLog ##
##指定Appender 名称为businessLog,并且每天产生一个日志文件。
 
  
注: # 为注释符号
可见log4j中有三种组件 Logger, Appender 和 Layout。详细解释如下.
 
Logger:
定义的格式: log4j.[loggername]=[level], appenderName1, appenderName2
level 是日至的级别 DEBUG<INFO<WARN<ERROR<FATAL
       如果定义级别为ERROR,则只有级别比它高的才会执行,即:执行FATAL,当然也包括指定的级别,即 ERROR。
appenderNamex 是日志的输出地。由后面的Appender定义。
ex:
       定义rootLogger,级别为DEBUG
       log4j.rootLogger=DEBUG
       定义用于记录错误信息的Logger:ErrorLog
       log4j.logger.ErrorLog=ERROR , errLog
       定义用于记录业务信息的Logger:BusinessLog
       log4j.logger.BusinessLog=INFO, businessLog
      
Appender:
org.apache.log4j.ConsoleAppender 控制台
org.apache.log4j.FileAppender 文件
org.apache.log4j.DailyRollingAppender 每天产生一个日志文件
org.apache.log4j.RollingFileAppender 文件到达指定大小时产生一个新的文件
org.apache.log4j.ConsoleAppender 将日志信息以流的方式发送到任意指定地方
 
定义格式:
              log4j.appender.appenderName=上述的类名
              log4j.appender.appenderName.option1=value1
              ……..
log4j.appender.appenderName.optionN=valueN
       以此类推。
ex:
       指定Appender 名称为errLog,并且每天产生一个日志文件。
       log4j.appender.errLog=org.apache.log4j.DailyRollingAppender
       指定输出地为文件error.log
       log4j.appender.errLog. file=error.log
       指定日期格式
       log4j.appender.errLog.DatePattern=’.’yyyy-MM-dd
       指定Layout,有关设置见Layout
       log4j.appender.errLog.layout=org.apache.log4j.PatternLayout
 
 
Layout:
       org.apache.log4j.HTMLLayout 用HTML表格的形式布局
       org.apache.log4j.PatternLayout 可以灵活的指定布局
org.apache.log4j.SimpleLayout 包含是指信息的级别和信息字符串
org.apache.log4j.TTCCLayout 包含日志产生的时间,线程,类别的信息
 
常用的为 PatternLayout .
      
定义格式
       log4j.appender.appenderName.layout=上述类名
       log4j.appender.appenderName.option1=value1
       …….
       log4j.appender.appenderName.optionN=valueN
ex:
       设置为灵活的布局模式。
       log4j.appender.errLog.layout=org.apache.log4j.PatternLayout
       设置转换模式。类似于C中输出函数(printf())中的转换模式。
       log4j.appender.errLog.ConversionPattern= %p -- %d{yyyy-MM-dd HH:mm:ss,SSS} - %c – Method:%m%n
 
       转换模式常用参数:(详细信息参见Log4j Conversion Pattern )
       %p 日志信息的级别
       %d 日志信息产生的时间
       %c 日志信息所在类名
       %m日志的具体信息
       %n 输出一个换行符
      
Apache 通用日志包
Log4j 仅仅是 Apache 通用日志包的一种实现。
要在代码中使用它还要借助 Apache 通用日志包。
前面日志的级别是在Apache 通用日志包定义的。并由日志实现指定级别(如:log4j.properties中指定)
FATAL 非常严重的错误,导致系统中止。
ERROR 其他运行时的错误。
WARN 警告
INFO  有意义的信息
DEBUG 系统运行时更加详细的信息
TRACE 更加详细的信息
 
 
 
在代码中,通常以下列方式使用:
       //通过 org.apache.commons.logging.LogFactory接口静态方法
//public static void getLog(String name)
//或
//public static void getLog(Class class)
//取得o rg.apache.commons.loggin.Log 对象。
 
Log logger=LogFactory.getLog(String name )  //指定Logger的Name
       //Log logger=LogFactory.getLog(Class class) //指定的类,用 ClassName.class ,如:PeclinicDAO.class
      
       //记录日志信息
       logger.fatal(Object msg)
       logger.fatal(Object msg, Throwable t)
       logger.error(Object msg)
       logger.error(Object msg, Throwable t)
       其他类似。
 
       Log接口的一组方法可以判断允许的日志级别
       logger.isFatalEnabled()
       logger.isErrorEnabled()
       logger.isWarnEnabled()
       其他类似。
       代码示例:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
public class HelloWorld{
       pirvate static final Log logger=LogFactory.getLog(HelloWorld.class)
      
       public void sayHello(String greet){
              if(logger.isInfoEnabled()){
                     logger.info(greet);
              }// end if
} // end sayHello
} // end HelloWorld
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值