Tomcat日志之Log4J介绍

来源:互联网 发布:java replace参数 编辑:程序博客网 时间:2024/05/16 18:20

1、告别System.out.println();的时代

System.out.println()对于很多还不怎么接触项目的童鞋来说,是一样再正常不过的查看运行状态的一个用法了。

但这毕竟是一时的,在真正的项目运用中,这个方式是不提倡使用的。

2、System.out.println();缺点

  • 程序过多的System.out.println()给程序代码带来了很多杂乱的代码
  • System.out.println()的作用只能输出显示在控制台上,是临时性的,无法将这些日志保存在文件中
  • 人为的干涉System.out.println(),当不要求显示出这些信息的时候,要求人为的去找出这些代码的位置并注释(麻烦)
  • System.out.println()并不能分级的显示信息,有些是提示,有些是错误等等,System.out.println()只会全盘的托出。

3、Log4J好处

  • Log4j代码清晰,可以清楚的去定义是提示信息,还是错误信息,还是调试信息,等等。(下面会讲到7种信息提示级别)
  • Log4j通过log4j.properties的配置文件,可以配置不同的输出方式,有(控制台、文件、html、mail等方式)可以选择
  • Log4j也可以通过配置文件可以设置,需要显示哪些层级的信息,灵活性更高。

4、Log4J发展历史

Apache曾极力游说Sun把log4j加入JDK1.4,然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了,因此拒绝了Apache的要求,使用自己的java.util.logging,这个包的功能比log4j差的很远,性能也一般。后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用 commons-logging.jar写的log程序,底层的Logger是可以切换的,你可以选择log4j,java.util.logging或者Simple Logger(commons-logging.jar自带的)。

5、Log4J和commons-logging区别和联系

commons-logging是Log4j的封装:

  •      commons-logging能把日志处理的log4j或其他的处理工具与项目进行解耦。
  •      commons-logging可以自动的选择日志实现的系统,它甚至不需要配置

6、Log4J和commons-logging结合使用

  • 首先在 classpath 下寻找自己的配置文件 commons-logging.properties,如果找到,则使用其中定义的 Log 实现类;
  • 如果找不到 commons-logging.properties 文件,则在查找是否已定义系统环境变量有着org.apache.commons.logging.Log,找到则使用其定义的 Log 实现类;
  • 否则,查看 classpath 中是否有 Log4j 的包,如果发现,则自动使用 Log4j 作为日志实现类;
  • 否则,使用 JDK 自身的日志实现类(JDK1.4 以后才有日志实现类);
  • 否则,使用 commons-logging 自己提供的一个简单的日志实现类 SimpleLog。
好处:

  • 可以不需要有配置文件,指的是commons-logging.properties(如果没有commons-logging,开发人员还需要自己加载log4j.properties配置文件
  • 会自动查找最适合的日志实现方式,如Log4j,还是需log4j.properties的,不要和第一条混淆了。
  • 在最坏的情况下,也有着自身的日志实现类SimpleLog来做日志处理。





0 0