设为首页 收藏本站
查看: 864|回复: 0

[经验分享] apache通用日志包commons-logging的简介以及与log4j的结合

[复制链接]

尚未签到

发表于 2017-1-13 08:00:55 | 显示全部楼层 |阅读模式
  一、commons-logging简介


  commons-logging是为那些需要建立在不同环境下使用不同日志架构的组件或库的开发者创建的,其中包括 Apache Log4j以及Java log的日志架构。把日志信息commons-logging的Log接口,并由commons-logging在运行时决定使用哪种日志架构。
  commons-logging提供一个统一的日志接口,简单了操作,同时避免项目与某个日志实现系统紧密耦合,可以自动选择适当的日志实现系统,甚至不需要配置。
  commons-logging实现自动选择日志实现系统的步骤如下:
  1)  首先在classpath下寻找自己的配置文件commons-logging.properties
,如果找到,则使用其中定义的Log实现类;
  其内容如下:

org.apache.commons.logging.log = 具体的实现类
  比如,使用log4j做为日志实现类,则commons-logging.properties
文件的内容为:

org.apache.commons.logging.log=org.apache.commons.logging.impl.Log4JLogger
  当然,在使用Log4j作为日志工具的时候,commons-logging.properties的配置可以不要。但是需要有log4j的配置文件log4j.properties。
  2) 如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量:org.apache.commons.logging.log,找到则使用其定义的Log实现类。
  如果在Tomact中可以建立一个名为CATALINA_OPTS 的环境变量 。

如果使用commons-logging自己的日志实现类,则该环境变量的值为:

- Dorg.apache.commons.logging.Log = org.apache.commons.logging.impl.SimpleLog - Dorg.apache.commons.logging.simpl
  3)  否则,查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类;
  4)  否则,使用JDK自身的日志实现类(JDK1.4以后才有日志实现类);
  5)  否则,使用commons-logging自己提供的一个简单的日志实现类SimpleLog;
  
(具体内容请参考官方文档:http://commons.apache.org/logging/commons-logging-1.1.1/guide.html#Configuration

  可见,commons-logging总是能找到一个日志实现类,并且尽可能找到一个“最合适”的日志实现类。
  commons-logging对编程者和Log4j都非常友好。
  
  为了简化配置commons-logging,一般不使用commons-logging的配置文件,也不设置与commons-logging相关的系
统环境变量,而只需将Log4j的Jar包放置到classpash中就可以了。这样就很简单地完成了commons-logging与Log4j的融
合。如果不想用Log4j,只需将classpath中的Log4j的Jar包删除即可。
  而目前,apache通用日志工具commons-logging和Log4j已经成为Java日志的标准工具。
  二、commons-logging的主要api



  commons-logging的使用很简单,一般只要使用到两个接口:
   org.apache.commons.logging.Log
以及org.apache.commons.logging.LogFactory

  下面的语句就可以得到一个Log实例:

private   static  Log log  =  LogFactory.getLog(YouClassName. class );
  LogFactory.getLog()方法的参数使用的是当前类的class,这是目前被普通认为的最好的方式。
  一般常用的Log类的方法如下:

log.debug( "debug message" ); //输出调试级别的日志信息
log.info("info message"); //输出信息级别的日志信息
log.warn("warn message"); //输出警告级别的日志信息
log.warn("error message"); //输出错误级别的日志信息
log.fatal("fatal message");  //输出致命错误级别的日志信息
   根据不同的性质,日志信息通常被分成不同的级别,从低到高依次是:
“调试(DEBUG)”<“信息(INFO)”<“警告(WARN)”<“错误(ERROR)”<“致命错误(FATAL)”

  

把日志信息分成不同的级别,是为了方便更好的控制它。
  比如,通过Log4j的配置文件,可以设置“输出‘调试’及以上级别的日志信
息”(即“调试”“信息”“警告”“错误”“致命错误”),这对项目开发人员可能是有用的;我们还可以设置“输出“警告”及以上级别的日志信息”(即“警
告”“错误”“致命错误”),这对项目最终用户可能是有用的。
  仅从字面上理解,也可以大致得出结论:最常用的应该是debug()和info();而warn()、error()、

fatal()仅在相应事件发生后才使用。
  上面所介绍的方法是目前被普通应用的,可以说是被标准化了的方法。
  commons-logging的详细javadoc请详见:http://commons.apache.org/logging/commons-logging-1.1.1/apidocs/index.html

  


  三、log4j和commons-logging结合


  log4j和commons-logging的结合很容易,在项目的classpath中加入log4j的jar包,同时在项目的文件中必须要有log4j.properties文件存在。这样在项目运行的时候,commons-logging会查找classpath中是否存在log4j的jar包,如果有,并且存在log4j.properties文件。则commons-logging会自动使用log4j来实现日志系统。
  log4j的简介及使用会在下一章中说明。
  注:本文参考了以下几篇网友的文章:
  http://www.blogjava.net/liuwentao253/archive/2006/08/03/61517.html

  http://lavasoft.blog.iyunv.com/62575/26134

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-327666-1-1.html 上篇帖子: 【转】OpenCms7.5.0整合Apache和Tomcat(去掉两个opencms) 下篇帖子: 使用Apache HttpClient访问ASP.NET发送GET和POST请求
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表