需要引入logging、commons-logging、log4这三个工具包,logging是JDK自带的一个包而commons-logging是log4的抽象,我们可以使用commons-logging也可以使用log4,基于面向抽象
编程的思想所以我们选择使用commons-logging的人多一些,如果某一天需要更换导出日志的包得时候也会容易替换。
让我们通过一个实例演示一下怎么样导出日志到文件或控制台。
首先,建立一个java project项目,然后在项目里面导入所需的三个包,建立一个logtest测试类,以及log4j.properties日志配置文件。
logTest类
[java]
package com.bjsxt.logTest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class logTest {
/**
* @param args
*/
public static void main(String[] args) {
Log logger = LogFactory.getLog(logTest.class);
logger.debug("DUBUG调试信息");
logger.info("INFO信息");
logger.warn("WARN信息");
logger.error("ERROR信息");
logger.fatal("FATAL信息");
}
}
log4j.properties日志配置文件
[plain]
在CODE上查看代码片派生到我的代码片
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:/oa.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout,file
#log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
#log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
#log4j.logger.org.hibernate.cache=debug
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
log4j.logger.com.bjsxt =info
在处理日志中涉及到一些重要概念,主要包括logger、appender、level、layout。
1、Logger
Logger按照布局中指定的格式把日志信息写入一个或多个输出源,Log4j 允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。
2、Level
它还有一个重要的属性——日志级别。不管何种日志记录工具,大概包含如下几种日志级别,优先级由低到高:DEBUG,INFO,WARN,ERROR,FATAL。
在程序中打印日志信息时,优先级别低于配置文件中指定的级别时,将不做任何处理;比如配置文件中指定优先级别是WARN,当程序中有代码logger.info(message),则对message不会进行处理(输出到控制台或者文件)
在log