lo4j介绍
一、什么是lo4j
log4j是一个帮助程序员将日志语句输出到各种输出目标的工具。
在应用程序出现问题的情况下,启用日志记录有助于找到问题所在。使用log4j,可以在运行时启用日志记录,而无需修改应用程序二进制文件。log4j包的设计使得日志语句可以保留在装船不产生高性能成本的代码。因此,伐木(或不伐木)的速度就是资本。
在同样的时间里,它的输出量会很快变得惊人。log4j的一个显著特点是分层记录器。使用loggers可以有选择地控制以任意粒度输出的日志语句。
log4j的设计有三个目标:可靠性、速度和灵活性。这些要求之间有着紧密的平衡。我们相信log4j达到了正确的平衡
二、日志输出是什么样子的?
日志输出可以通过多种方式进行定制。此外,通过实现自己的布局,可以完全覆盖输出格式。
下面是一个使用 图案布局以转换模式
176 [main] INFO examples.Sort - Populating an array of 2 elements in reverse order.
225 [main] INFO examples.SortAlgo - Entered the sort method.
262 [main] DEBUG SortAlgo.OUTER i=1 - Outer loop.
276 [main] DEBUG SortAlgo.SWAP i=1 j=0 - Swapping intArray[0] = 1 and intArray[1] = 0
290 [main] DEBUG SortAlgo.OUTER i=0 - Outer loop.
304 [main] INFO SortAlgo.DUMP - Dump of interger array:
317 [main] INFO SortAlgo.DUMP - Element [0] = 0
331 [main] INFO SortAlgo.DUMP - Element [1] = 1
343 [main] INFO examples.Sort - The next log statement should be an error message.
346 [main] ERROR SortAlgo.DUMP - Tried to dump an uninitialized array.
at org.log4j.examples.SortAlgo.dump(SortAlgo.java:58)
at org.log4j.examples.Sort.main(Sort.java:64)
467 [main] INFO examples.Sort - Exiting main method.
第一个字段是自程序启动以来经过的毫秒数。第二个字段是输出log语句的线程。第三个字段是log语句的级别。第四个字段是发出日志请求的记录器最右边的两个组件。第五个字段(在“-”之前)是嵌套诊断上下文(国家数据中心)。注意,嵌套的诊断上下文可能与前两个语句中一样为空。“-”后面的文本是语句的消息。
三、log4j有什么特点?
- log4j针对速度进行了优化。
- log4j基于命名的记录器层次结构。
- log4j是故障停止。然而,尽管log4j确实努力确保传递,但它并不保证每个log语句都将被传递到目的地。
- log4j是线程安全的。
- log4j并不局限于一组预定义的设施。
- 可以使用配置文件在运行时设置日志记录行为。配置文件可以是属性文件,也可以是XML格式。
- log4j设计用于从一开始就处理Java异常。
- log4j可以将它的输出定向到一个文件,控制台,一个使用TCP的远程服务器,一个远程Unix Syslog守护进程,一个使用JMS的远程侦听器,一个NT事件日志,甚至发送电子邮件。
- log4j使用6个级别,即TRACE、DEBUG、INFO、WARN、ERROR和FATAL。
- 通过扩展班级
- 日志输出的目标以及写入策略可以通过接口
- log4j支持每个记录器有多个输出附加器。
- log4j支持国际化。