SpringBoot(六)—— 日志集成

Java有许多的日志组件,比如log4j、log4j2、logback,还有Java自身提供的Logging,其实在SpringBoot中对这些log4j,log4j2和logback等都提供相应的组件支持。


在SpringBoot中默认使用的日志工具是logback,不过在提及具体的日志工具之前要提一个名词,这个名词就是slf4j(Simple Logging Facade For Java)。

slf4j不是具体的日志解决方案,它有点类似于JDBC,使用了门面模式,是一个针对各类日志的抽象实现,既然是抽象的日志实现,在SpringBoot中肯定不需要额外导入。


注意: spring-boot-starter中就提供了对spring-boot-starter-logging的依赖,在spring-boot-starter-logging中可以看到以及集成了slf4j与具体实现logback的默认支持,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


既然SpringBoot都默认支持了logback,那么我们该如何使用呢?其实我们在代码中使用其日志非常非常的简单,如下:
在这里插入图片描述


默认情况下,SpringBoot配置的是INFO日志级别,也就是会输出info级别以上的日志( INFO、WARN、ERROR )。即默认为 logging.level.root=INFO ,root表示整个项目。


当然我们也是在可以在 .properties文件或 .yml文件中调整其日志级别的,还可以也可以设置为某个包下,也可以具体到某个类名,如下:

logging.level.root=INFO
logging.level.com.kimi.controller=DEBUG

logging
 level
  root : INFO
  com.kimi.controller=DEBUG



另外一般情况下,SpringBoot日志只会输出到控制台,并不会写入到日志文件,但是,在一些正式环境的应用中,我们需要通过在 .properites文件或 .yml文件中配置 logging.file 文件名称和 logging.path 文件路径,将日志输出到日志文件中。


如果只配置 logging.path,在 /var/tmp 文件夹生成一个日志文件为 spring.log。
如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。


注意: logging.path 和 logging.file 如果都配置了,那么只会有 logging.file 生效,所以如果要指定日志生成的具体位置使用logging.file 配置即可

loggin.file=D:\log\\test.log




另外如果不想使用logback,我们还可以使用log4j、log4j2等等,如果我们想要使用其他的日志的话,首先我们需要将SpringBoot默认支持的logback移除,然后再引入我们希望使用的日志,如log4j2
在这里插入图片描述




然后其使用方法与上述介绍的一致,另外我们一般不建议集成log4j使用,因为在SpringBoot中并没有提供对log4j这个依赖的支持,因此要使用它配置起来还是挺麻烦的,如我们将SpringBoot默认支持的logback移除,引入log4j的支持后,还需要配置相关的设置
在这里插入图片描述

在classpath下增加log4j.properties文件

# 控制台输出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# root日志输出
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.file=logs/all.log
log4j.appender.file.DatePattern='.'yyyy-MM-dd
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

# error日志输出
log4j.appender.errorfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.file=logs/error.log
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout=org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n

配置中log4j有三个主要部分:日志记录器(Loggers),输出端(Appenders),和日志格式化器(Layout)。

  • Logger:控制要启用或禁用那些日志记录语句,并对日志信息进行级别限制。
  • Appenders:指定将日志打印到控制台还是文件中等。
  • Layout:控制日志信息的显示格式。

Log4j常用的几种输出目的地:

  • org.apache.log4j.ConsoleAppender:将日志输出到控制台
  • org.apache.log4j.FileAppender:将日志输出到文件
  • org.apache.log4j.DailyRollingFileAppender:将日志信息输出到一个日志文件,并且每天输出到一个新的日志文件。
  • org.apache.log4j.RollingFileAppender:将日志输出到一个日志文件,并且指定文件的尺寸,当文件大小到达指定尺寸,会自动把文件改名,同时产生一个新的文件。
  • org.apache.log4j.WriterAppender:将日志信息已流的格式发送到任意指定地方。
  • org.apache.log4j.jdbc.JDBCAppender:通过JDBC把日志信息输出到数据库中。

日志格式化器Layout:

  • org.apache.log4j.HTMLLayout:格式化日志输出为HTML表格形式。
  • org.apache.log4j.SimpleLayout:以一种非常简单的方式格式化日志输出。
  • org.apache.log4j.PatternLayout:根据指定的转换模式格式化日志输出,或者如果没有指定任何转换模式,就使用默认的转换模式。
  • org.apache.log4j.TTCCLayout:包含日志产生时间、线程、类别等信息。

常见打印参数如下:

  • %m:输出代码中指定的消息
  • %p:输出优先级即DEBUG、INFO、WARN、ERROR、FATAL
  • %r:输出自应用启动到输出该log信息耗费的毫秒数。
  • %c:输出所属的类目,通常就是所在类的全名。
  • %t:输出产生该日志事件的线程名
  • %n:输出一个回车换行符,Window平台为“/r/n”,Unix平台为”/n”。
  • %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可在其后指定格式,比如:%d{yyyy MM dd HH:mm:ss,SSS},输出类似:2018年8月13日 14:25:28,123
发布了286 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/newbie0107/article/details/105399048