使用log4j与common-logging记录日志

jar包:commons-logging.jar,log4j-1.2.14.jar
程序:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class FirstLogger {
 private static Log logger = LogFactory.getLog(FirstLogger.class);
 public static void main(String[] args){
  logger.debug("111");
  logger.info("222");
  logger.warn("333");
  logger.error("444");
  logger.fatal("555");
 }
}
log4j.property是必需的(放在classpath下):
## LOGGERS ##
#define a logger named helloAppLogger
log4j.rootLogger=DEBUG,stdout,filelog
# for Tomcat ,not for jboss
## APPENDERS ##
# define an appender named console, which is set to be a ConsoleAppender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# define an appender named file, which is set to be a RollingFileAppender
log4j.appender.filelog=org.apache.log4j.RollingFileAppender
log4j.appender.filelog.File=log/ikangmis3.log
log4j.appender.filelog.MaxFileSize=100KB
# Keep three backup files.
log4j.appender.filelog.MaxBackupIndex=3
## LAYOUTS ##
# assign a SimpleLayout to console appender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
# assign a PatternLayout to file appender
log4j.appender.filelog.layout=org.apache.log4j.PatternLayout
log4j.appender.filelog.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
#log4j.logger.org.hibernate=ERROR
#log4j.logger.org.hibernate.cache=debug
log4j.logger.org.hibernate.cfg.SettingsFactory=WARN
log4j.logger.org.apache.catalina.core.StandardContext=debug
log4j.logger.org.hibernate.cfg.Configuration=WARN
log4j.logger.org.hibernate.cfg.HbmBinder=WARN
log4j.logger.org.hibernate.cache=WARN
log4j配置文件有三个主要的组件:Logger,Appender和Layout,分别为日志类型,日志输出目的地,日志输出格式。
log4j.rootLogger = [level], appenderName, appenderName, ...    (level是错误级别,appenderName是输出目的地,本例设为mylog,可以定义多个)
level优先级分别为FATAL、ERROR、WARN、INFO、DEBUG 5个级别.通过定义的级别,你可以控制程序中的日志输出.比如在这里定义了ERROR级别,程序中只有FARAL、ERROR 级别的LOG会被输出.
log4j.appender.mylog= 输出目的地    (这里的appenderName是在前面定义的,可任意起名)
Log4j提供的输出目的地有以下几种:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件到达指定大小时产生一个新文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任何地方)
 
log4j.appender.filelog.File=your file dir
log4j.appender.filelog.MaxFileSize=your filesize
log4j.appender.mylog.MaxBackupIndex=num设置保存备份文件数量
 
log4j.appender.appenderName.layout = 布局类型(设置布局类型)
Log4j提供的layout有以下4种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
如果使用PatternLayout布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows为"rn",Unix为"n"
%d 输出日志时间,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出:2007年5月17日 19:30:00,000
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数
[QC]是log信息的开头,可以为任意字符,一般为项目简称
 
程序中并没有直接用到log4j的类,而是使用了commons-logging提供的日志类。commons-logging是为"所有的Java日志实现"提供一个统一的接口,它的功能据说“平常弱”。
Log(基本记录器)和LogFactory(负责创建Log实例)。当commons-logging.jar被加入到CLASSPATH之后,它会合理地猜测你喜欢的日志工具,然后进行自我设置,用户根本不需要做任何设置。默认的LogFactory是按照下列的步骤去发现并决定那个日志工具将被使用的(按照顺序,寻找过程会在找到第一个工具时中止):
1.寻找当前factory中名叫org.apache.commons.logging.Log配置属性的值
2.寻找系统中属性中名叫org.apache.commons.logging.Log的值
3.如果应用程序的classpath中有log4j,则使用相关的包装(wrapper)类(Log4JLogger)
4.如果应用程序运行在jdk1.4的系统中,使用相关的包装类(Jdk14Logger)
5.使用简易日志包装类(SimpleLog)
 

你可能感兴趣的:(log4j,日志,职场,休闲,common-logging)