日志记录是应用程序运行中必不可少的一部分。具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源。
对于现在的应用程序来说,日志的重要性是不言而喻的。很难想象没有任何日志记录功能的应用程序运行 在生产环境中。日志所能提供的功能是多种多样的,包括记录程序运行时产生的错误信息、状态信息、调试信息和执行时间信息等。在生产环境中,日志是查找问题 来源的重要依据。应用程序运行时的产生的各种信息,都应该通过日志 API 来进行记录。
Java的日志系统log4j
java的日志框架有很多中,有一个最经典:log4j。特点:日志级别、指定输出源、指定输出格式等。
Log4j 使用的级别则包括 OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE 和 ALL 等,级别逐级下降。
配置一个log4j的核心配置文件:log4j.properties。
三个主要配置:
1)根记录器:log4j的全局的日志配置。
key固定,值:格式:级别,输出源1,输出源2,……..log4j.rootLogger=info
级别:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE 和 ALL
配置级别:log4j只会输出,比配置级别相同和更高的级别日志。
也就是说,可以通过配置,就可以控制日志输出级别。代码不需要变化。
输出源:配置定义好的输出源。
基本使用
- 开发的时候,可以配置为debug级别,程序发布到正式环境下,将级别提升为info。
- 指定哪个包下面的哪个类使用指定的级别来输出,相当于覆盖了根记录器的配置。
格式:log4j.logger.包.类=级别,输出源 - 输出的格式可以自己修改。但要遵循格式。
2)输出源的配置和内容布局配置
java的日志体系框架
Java的常见的日志系统有log4J,jdk-jul,logback等,这些日志系统各自独立,编程方式也不一致。如果你一个系统要用到多个框架库,而这些框架库又可能要用不同的日志系统,那么你一个系统中就得使用多套日志系统,那多套日志系统如何融合在一起是个很大的问题。
进行抽象,抽象出一个接口层,对每个日志实现都适配或者转接,这样这些提供给别人的库都直接使用抽象层即可,不需要关注具体的日志实现。常见的日志抽象出来的框架有Apache commons-logging和slf4j。