Log4j和common-logging都是apache下的开源项目,他们的区别和简单使用请参考以下网址。
http://touch.iteye.com/blog/31632这是篇非常好的文章,我只想给他做一下补充。
补充一:
大家可以看到不管是log4j还是commons-logging,在程序中使用时都需要以下步骤:
1.初始化,生成静态实例:
commons-logging中是: private static Log log = LogFactory.getLog(TestLog. class );
log4j中是:static Logger logger = Logger.getLogger(TestLog4j. class );
PropertyConfigurator.configure( " log4j.properties " );
第二句可以省略,缺省情况下,他会自己找到 log4j.properties。
2. 在程序中使用:
logger.debug( " Here is some DEBUG " );
logger.info( " Here is some INFO " );
logger.warn( " Here is some WARN " );
如果这样做,会在每个程序中生成一个静态实例,如果是比较大的项目,这样做是不妥的。
我们可以在整个应用程序中生成一个实例,也就是初始化一次,在整个应用程序中都使用这个实例。
比如,我们写一个日志初始化类,如下:
package myb.hi.core.log;
import org.apache.commons.logging.*;
public class Logs {
private static Log log;
/**
* Define a static Log variable,
*/
static{
try{
log=LogFactory.getLog(Logs.class);
}catch(Exception ex){
System.out.println("can't init the Logger, caused by: "+ex);
}
}
/**
* Get the log object
* @return Log
*/
public static Log getLogger(){
return log;
}
}
上面代码使用commons-logging生成一个静态log实例,以后的程序就可以这样来做:
Logs.getLogger().info("begin Action: UserBaseInfoAction.getSingleUserInfo()");
DBSession.begin();
String fname=userForm.getFname();
userForm=UserBaseInfoBusiness.getSingleUserInfo(DBSession.getSession(),fname);
DBSession.commit();
request.setAttribute("userInfo",userForm);
Logs.getLogger().info("end Action: UserBaseInfoAction.getSingleUserInfo()");
在需要做记录的地方使用Logs.getLogger()获得这个log实例,然后再调用他的方法(info,debug,error等)。
Log4j的实现方法类似,初始化类可以这样写:
package myb.hi.core.log;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class Logs {
private static Logger log logger;
/**
* Define a static Log variable,
*/
static{
try{
logger=Logger.getLogger(LogInit.class);
//DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加载.xml文件
//PropertyConfigurator.configure("log4j.properties");//加载.properties文件 }catch(Exception ex){
System.out.println("can't init the Logger, caused by: "+ex);
}
}
/**
* Get the log object
* @return Log
*/
public static Logger getLogger(){
return logger;
}
}
应用程序中的调用是完全相同的。
补充二:
log4j.properties文件中,logger定义的日志级别可以和appender的不一样。
在定义logger时,尽量把日志级别往低里写;在appender里定义日志级别时可以按需要来写。
比如,定义一个logger,
log4j.rootLogger = DEBUG, CONSOLE,A1
定义成DEBUG,不管appender怎么定义,肯定有输出。
如果定义成:
log4j.rootLogger = INFO, CONSOLE,A1
定义成INFO,appender的定义必须级别必须比他高才行,如果appender定义成DEBUG,将不会输出。
同样的,在程序中调用logger时,调用的方法级别也必须要比logger定义的级别高,才有输出。
比如,log4j.rootLogger = INFO, CONSOLE,A1
定义成INFO,程序中,Logs.getLogger().info()方法是可以有输出的;Logs.getLogger().debug()方法将不会有任何输出。
补充三:
有关日志文件输出路径。
如果不指定路径,日志文件是输出在运行目录的,也就是应用服务器的bin目录下,
比如下面:
log4j.appender.A1.File = SampleMessages.log4j
假设应用服务器用的是tomcat,那么SampleMessages.log4j文件会在tomcat安装目录的bin子目录下。
为了把日志文件统一存放,请使用绝对路径或相对路径,比如下面:
log4j.appender.A1.File = ../logs/SampleMessages.log4j
这样日志文件将放在tomcat的logs目录内。
原文见
http://blog.csdn.net/mayabin/archive/2007/01/22/1489830.aspx
分享到:
相关推荐
log4j.jar以及common-logging.jar两个jar文件全在这个log压缩包中
common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的...使用它的好处就是,代码依赖是common-logging而非log4j, 避免了和具体的日志方案直接耦合,在有必要时,可以更改日志实现的第三方库。
本资料共包含以下附件: log4j.jar common-logging.jar 两个jar文件
NULL 博文链接:https://andychen214.iteye.com/blog/401642
NULL 博文链接:https://wwwzhouhui.iteye.com/blog/391950
我用maven + spring mvc +JDBCTEMPLATE + 由Slf4j实现Common-Logging+Log4j的日志控制 (数据库用MySQL)简单编写的注册功能模块 附:项目搭建中的完整步骤和说明
完整common-logging库文件,jar包,配置Eclipse开发很多项目必须添加的依赖。懂的人都知道的!
NULL 博文链接:https://aselidy.iteye.com/blog/2215717
**log4j-api-2.x 和 log4j-core-2.x是必须的,其他包根据需要引入, Common Logging Bridge: log4j-jcl-2.3 Log4j 2是log4j 1.x和logback的改进版,据说采用了一些新技术(无锁异步、等等),使得日志的吞吐量、性能...
用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的...
Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的... Because we use commons-logging you are free to choose your logging implementation (Log4j is a common choice).
log4j.properties ,commons-logging-1.2.jar,log4j-1.2.16.jar,三个文件一起组成一个完整的日志输出,Apache的Common Logging只是一个高层的日志框架,本身并没有实现真正的写日志能力,而是依赖其它的日志系统如...
commons-logging-1.0.4.jar可以引入: org.apache.commons.logging.Log,org.apache.commons.logging.LogFactory等,用于写日志。 免费送,只要1积分
java企业门户开源Common.Logging .NET 项目构建状态 *注意:由于代码覆盖工具 (NCover) 在我们选择的 CI 服务器平台 (Appveyor) 上的测试运行期间无法可靠地连接到测试运行器的问题,构建可能会定期失败。 工作继续...
java连接jdbc使用到的13个jar包:commons-logging-1.0.4,hadoop_fat,hadoop-common-2.0.0-cdh4.7.0,hive-...libfb303-0.9.0,libthrift-0.9.0-cdh4-1,log4j-1.2.16,slf4j-api-1.6.1,slf4j-api-1.6.4,slf4j-log4j12-1.6.1
NULL 博文链接:https://raozhiyong11.iteye.com/blog/1485880
通用日志站点用于Sitecore.Logging.dll的Common.Logging适配器(log4net v1.2.0.30714 aka Beta8)请参见以获取基础项目。 自Sitecore 6.6.0修订版120918以来,Sitecore.Logging.dll尚未更改,它包装了非常旧的log4...
包含hadoop平台Java开发的所有所需jar包,例如activation-...slf4j-log4j12-1.7.25.jar snappy-java-1.0.5.jar stax-api-1.0-2.jar stax2-api-3.1.4.jar woodstox-core-5.0.3.jar xmlenc-0.52.jar zookeeper-3.4.9.jar
common-2.1.0.jar,hive-jdbc-0.13.1.jar,hive-service-1.1.0.jar,httpclient-4.5.3.jar,httpcore-4.4.6.jar,libthrift-0.9.2.jar,log4j-1.2.17.jar,slf4j-api-1.5.0.jar,slf4j-log4j12-1.5.0.jar等jar包
spring开发,或者tomcat开发中需要添加日志包,此中包含了 common-logging.jar,log4j-1.2.17.jar, log4j-core-2.2.jar 众多jar包。