log4j——从基础到应用的突破

在真正使用到日志之前,日志于我只是概念上的,但是真正接触到之后才发现真的有很大的好处:

1.监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作

2.跟踪代码运行时轨迹,作为日后审计的依据

3.担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。

好处不少吧,所以还是要好好学习一下日志的~

使用log4j进行日志记录,不仅可以清晰的记录日志的重要性,而且输出的日志信息格式可以按照你自己想要的方式定义,输出日志的目的地也可以自定义到控制台、文件等等,相对于简单的System.out.println来说,简直方便了很多!

那么log4j有哪些需要学习和注意的地方呢,下面我就简单的从log4j的基础、两种配置方式(.properties 和.xml)、在普通项目和spring项目中使用log4j这几个方面介绍一下log4j。

一.log4j的三个基本组件

Log4j有三个主要的组件:Logger(记录器),Appender(输出源)和Layout(布局),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置。在对这三个组件进行说明的前面,我想先附上一副图,显示一下它们之间的关系:



下面对三个组件分别进行说明:

(一) Logger

是用来取代System.out和System.err的日志写出器,供程序员输出日志信息

1.命名规则

Logger由一个String类的名字识别,大小写敏感,并且名字之间具有继承关系,子名有父名作为前缀,并用点.(分隔),形如x.y是x.y.z的父亲。

对于普通的logger来说,通过调用public static Logger Logger.getLogger(String name)或者public static Logger Logger.getLogger(Class clazz)获得(或者创建)一个named logger。后者相当于调用Logger.getLogger(clazz.getName())。

另外Logger有一个根Logger(rootLogger),它是所有logger的祖先,它有以下特性:

(1)总是存在的

(2)不可以通过名字获取

对于根logger的获取或创建,是通过调用public static Logger Logger.getRootLogger()来获得root logger的。

注:

1>.在对Logger实例进行命名时,没有严格的限制,可以随意命名,但是一般情况下建议使用该类所在位置来命名Logger实例,例如:static Logger logger = Logger.getLogger(ClientWithLog4j.class.getName());

2>.用同名参数调用Logger.getLogger(String name)将返回同一个logger的引用。故可以在一个地方配置logger,在另外一个地方获得配置好的logger,而无须相互间传递logger的引用。 
3>.logger的创建可以按照任意的顺序,即,父logger可以后于子logger被创建。log4j将自动维护logger的继承树。


2.log的级别

每个logger都有一个日志级别,用来控制日志信息的输出,未被分配级别的日志将继承它的父log。

七个级别(等级由高到底):OFF>FATAL>ERROR>WARN>INFO>DEBUG>ALL

OFF:相当于关闭所有的输出,不输出任何级别的日志信息

ALL:相关于输出所有的日志级别的信息

建议使用fatal、error、warn、info和debug这五个级别

注:日志级别定义到一个级别之后,表示只打开该级别以及高于该级别的输出,输出该级别之前的信息,例如日志级别定义为warn,那么info和debug和all将不会被输出

(二)Appender

日志输出目的地。每个logger都可以拥有一个或多个appender,每个appender表示一个日志的输出目的地

1.log4j提供的几种appender:

1).org.apache.log4j.ConsoleAppender:

把日志输出到控制台,每个ConsoleAppender都有一个target,表示它的输出目的地,可以是System.out(标准输出设备,缓冲显示屏,默认情况下是System.out),或者是System.err(标准错误设备,不缓冲显示屏)。

从文章开头的类图中可以看出ConsoleAppender是继承了WriteAppender

2).org.apache.log4j.FileAppender

把日志输出到一个指定的日志文件中去。和ConsoleAppender一样,FileAppender也继承了WriteAppender。

3).org.apache.log4j.DailyRollingFileAppender

每天产生一个日志文件

4).org.apache.log4j.RollingFileAppender

是FileAppender的子类,同样是把日志输出到一个指定的文件中,但是不同的是,这个文件的大小收到限制,一旦文件大小到达指定尺寸的时候,该文件将向上滚动(最老的日志记录被擦除)
5).org.apache.log4j.WriterAppender</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值