commons-logging日志系统

    • 日志的重要性是随着系统的膨胀而显现的,在一个庞大的系统中查错没有各种日志信息 是寸步难行的。所以在系统加入日志是必须的。
    • 最原始的日志方式,就是在程序的适当地方添加System.out.println()方法,但是带来 的问题是,系统稳定后,日志太大,如果要减少日志量,就需要重新修改程序,虽然只 是注释掉System.out.println()方法。但是万一系统再次出错,又要改。
    • commons-logging提供分级日志功能,相当于把System.out.println()方法加强了,原来 是一定输出到控制台,现在commons-logging有6级日志,但是apache建议使用4级,即 ERROR、WARN、INFO、DEBUG。什么情况下输出日志由程序中写日志的方法决定,输出什 么级别以上的日志和输出到哪里由配置文件决定。
    • 使用commons-logging如下:
    //导入类
    import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class TestLog { //获取以当前类为参数的日志对象 private static Log log = LogFactory.getLog(TestLog.class); public static void main(String[] args){ //输出4种不同级别的日志 log.debug("111"); log.info("222"); log.warn("333"); log.error("444"); } } 
    • 当然还要配置commons-logging.properties文件,其中定义输出哪个级别以上的日志。
    • 好像这就完了,和log4j没啥关系。那么为什么一般系统都会使用commons-logging和 log4j两个包来记录日志呢?
    • 原因就是commons-logging的输出功能比较弱,也就是输出格式和输出设备选择有限,只 有原生输出类org.apache.commons.logging.impl.SimpleLog。但是它提供了一个通用的 日志接口org.apache.commons.logging.log,让其他的包来实现复杂的输出。其中就有 Jdk14Logger, Log4JLogger,前面是jdk1.4之后加入的,后面就是log4j中的类。
    • log4j也可以直接像commons-logging一样在程序中定义输出信息,然后再配置文件中定 义输出级别,但是这样做就会使程序唯一的和log4j绑定(如果你一定要单独使用 log4j,那么也是可以的),而且commons-logging更加智能,帮我们自动选择"适当的" 日志实现系统:
    1) 首先在classpath下寻找自己的配置文件commons-logging.properties,如果找到,则
       使用其中定义的Log实现类;
    
    2) 如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量
       org.apache.commons.logging.Log,找到则使用其定义的Log实现类;
    
    3) 否则,查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类;
    
    4) 否则,使用JDK自身的日志实现类(JDK1.4以后才有日志实现类);
    
    5) 否则,使用commons-logging自己提供的一个简单的日志实现类SimpleLog;
    
    • 所以,在前面程序的基础上,只要导入log4j的包,则commons-logging会自动使用 log4j作为输出类,程序不需要任何改动,但是注意:log4j的配置文件 log4j.properties对Log4j来说是必须的。如果classpath中没有该配置文件,或者配置 不对,将会引发运行时异常。所以下面介绍log4j.properties的配置。

转载于:https://www.cnblogs.com/nx99/p/9905808.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值