springboot日志框架

abin-c      2022-04-27     181

关键词:

Java 有很多日志系统,例如,Java Util Logging, Log4J, Log4J2, Logback 等。Spring Boot 也提供了不同的选项,比如日志框架可以用 logback 或 log4j 等。

 

默认的日志框架 logback

例如,maven 依赖中添加了 spring-boot-starter-logging。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

那么, Spring Boot 应用将自动使用 logback 作为应用日志框架, Spring Boot 启动的时候,由 org.springframework.boot.logging.Logging.Logging-Application-Listener 根据情况初始化并使用。

值得注意的是,默认情况下,Spring Boot 使用 logback 作为应用日志框架。因为 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。

技术分享图片

日志级别

默认情况下,Spring Boot 配置 ERROR, WARN, INFO 三种日志级别。如果需要 Debug 级别的日志。在 src/main/resources/application.properties 中配置数据源信息。

debug=true

此外,配置 logging.level.* 来具体输出哪些包的日志级别。

例如

logging.level.root=INFO
logging.level.org.springframework.web=DEBUG

日志文件

默认情况下, Spring Boot 日志只会输出到控制台,并不会写入到日志文件,因此,对于正式环境的应用,我们需要通过在 application.properites 文件中配置 logging.file 文件名称和 logging.path 文件路径,将日志输出到日志文件中。

logging.path = /var/tmp
logging.file = xxx.log
logging.level.root = info

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

值得注意的是,日志文件会在 10MB 大小的时候被截断,产生新的日志文件。

常用的日志框架 log4j

如果,我们希望使用 log4j 或者 log4j2,我们可以采用类似的方式将它们对应的依赖模块加到 Maven 依赖中。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

或者

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

log4j 依赖模块加到 Maven 依赖中后,在 src/main/resources 目录下加入 log4j-spring.properties 配置文件。Spring Boot 官方推荐优先使用带有 –spring 的文件名作为你的日志配置, 例如 log4j-spring.properties,当然使用 log4j.properties 也是支持的。

通过如下配置,设定root日志的输出级别为INFO,appender为控制台输出stdout

# LOG4J配置
log4j.rootCategory=INFO, stdout

# 控制台输出
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

输出到文件

在开发环境,我们只是输出到控制台没有问题,但是到了生产或测试环境,或许持久化日志内容,方便追溯问题原因。可以通过添加如下的appender内容,按天输出到不同的文件中去,同时还需要为log4j.rootCategory添加名为file的appender,这样root日志就可以输出到logs/all.log文件中了。

#
log4j.rootCategory=INFO, stdout, file

# 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

分类输出

当我们日志量较多的时候,查找问题会非常困难,常用的手段就是对日志进行分类,比如:

  • 可以按不同package进行输出。通过定义输出到logs/my.log的appender,并对com.didispace包下的日志级别设定为DEBUG级别、appender设置为输出到logs/my.log的名为didifile的appender。
# com.didispace包下的日志配置
log4j.category.com.didispace=DEBUG, didifile

# com.didispace下的日志输出
log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.didifile.file=logs/my.log
log4j.appender.didifile.DatePattern=‘.‘yyyy-MM-dd
log4j.appender.didifile.layout=org.apache.log4j.PatternLayout
log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n
  • 可以对不同级别进行分类,比如对ERROR级别输出到特定的日志文件中,具体配置可以如下。

log4j.logger.error=errorfile
# 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

































java日志框架--springboot中的日志使用(代码片段)

1.SpringBoot中的日志使用springboot框架在企业中的使用越来越普遍,springboot日志也是开发中常用的日志系统。springboot默认就是使用SLF4J作为日志门面,logback作为日志实现来记录日志。不懂日志框架和日志门面的请查看这篇... 查看详情

springboot添加日志框架

日常搭建springboot项目,使用springboot自带的日志框架即可,spirngboot自带的日志框架为:logback。logback使用maven依赖导入: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starte 查看详情

java日志框架--springboot中的日志使用(代码片段)

1.SpringBoot中的日志使用springboot框架在企业中的使用越来越普遍,springboot日志也是开发中常用的日志系统。springboot默认就是使用SLF4J作为日志门面,logback作为日志实现来记录日志。不懂日志框课和日志门面的请查看这篇... 查看详情

springboot2-日志(代码片段)

springboot2-日志一、日志框架的选择1.供选择的部分框架二、SLF4J使用1.如何在系统中使用SLF4J2.调用代码示例:3.图示:4.如何统一日志记录三、SpringBoot日志关系1.父类2.底层实现3.底层依赖关系4.小结5.引入其他框架6.只需排... 查看详情

springboot日志框架

...有很多日志系统,例如,JavaUtilLogging,Log4J,Log4J2,Logback等。SpringBoot也提供了不同的选项,比如日志框架可以用logback或log4j等。 默认的日志框架logback例如,maven依赖中添加了spring-boot-starter-logging。<dependency><groupId>org.spri 查看详情

javaee——springboot日志篇:日志框架slf4j日志配置日志使用切换日志框架

SpringBoot日志篇1、日志框架(故事引入)小张;开发一个大型系统;?1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件??2、框架来记录系统的一些运行时信息;日志框架;zhanglogging.jar;?3、高大上的几个功... 查看详情

springboot----日志框架和配置(代码片段)

...起使用slf4j进行输出如何让系统中所有日志统一使用slf4jSpringBoot日志关系日志使用1.springBoot默认已经帮我们配置了日志配置关于使用logger.trace()里面传入字符串爆红问题=== 查看详情

springboot日志的使用

SpringBoot支持JavaUtileLogging、Log4J、Log4J2和Logback作为日志框架,无论使用哪种框架,SpringBoot都为当前使用日志框架及文件输出做好了配置。默认情况下,SpringBoot使用LogBack作为默认日志框架,输出格式的文件是logback.... 查看详情

springboot日志

1、日志框架小张;开发一个大型系统;1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件?2、框架来记录系统的一些运行时信息;日志框架;zhanglogging.jar;3、高大上的几个功能?异步模式?自动归档?xxxx... 查看详情

springboot统一日志框架的使用

...统一日志框架的使用,第一步要排除其他的日志框架,在SpringBoot的Maven依赖里可以清楚的看到SpringBoot排除了其他日志框架(<exclusions>标签)。我们自行排除依赖时也只需要按照图中的方式就好了。SpringBoot是使用了SLF4J+logback的... 查看详情

springboot与日志框架1(代码片段)

一、日志框架1.无论在什么系统,日志框架都是一个重要角色,所以理解和用好日志框架是相当重要的;像JDBC一样,日志框架分为接口层的门面和具体的实现组成。2.市面上的产品:2.1门面:SLF4J(SimpleLogginFacadeforJava)、JCL(JakartaCom... 查看详情

springboot与日志框架2(日志内斗)(代码片段)

一、SpringBoot如何引入slf4j+logback框架的呢?在POM文件中<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>依赖<d 查看详情

springboot+log4j2日志框架配置(maven)

参考SpringBoot官方文档日志部分SpringBoot默认情况下,当使用"Starters"使用Logback输出日志,还包括适当的Logback路由,确保其他的日志框架(JavaUtilLogging,CommonsLogging,Log4j,SLF4J)都能正常使用SpingBoot文档的26.5CustomLogConfiguration章节,说明... 查看详情

[springboot]slf4j日志框架的体系结构

文章目录一、五花八门的日志工具包1.1.日志框架1.2.日志门面1.3日志门面存在的意义二、日志框架选型三、日志级别四、常见术语概念解析刚刚接触到javalog日志的同学可能会被各种日志框架吓到,包括各种日志框架之间的jar... 查看详情

springboot使用日志(代码片段)

...ingLog4j、JUL、Log4j2、Logback日志门面:SLF4J日志实现:LogbackSpringBoot:底层是Spring框架,Spring框架默认是用JCL;SpringBoot选用SLF4J和Logback.2、SLF4J使用以后开发的时候,日志记录。日志记录方法的调用,不应直接调用日志的实现类,而... 查看详情

日志管理,springboot

...og4j、log4j2、slf4j....2.日志门面:SLF4J;日志实现:Logback;SpringBoot:底层是Spring框架,Spring框架默认是用JCL;‘SpringBoot选用SLF4j和logback;3.SLF4j使用3.1如何在系统中使用SLF4j  https://www.slf4j. 查看详情

springboot怎么看日志

参考技术Aspringboot内部使用CommonsLogging来记录日志,但也保留外部接口可以让一些日志框架来进行实现,例如JavaUtilLogging,Log4J2还有Logback。如果你想用某一种日志框架来进行实现的话,就必须先配置,默认情况下,springboot使用Logba... 查看详情

重学springboot系列之日志框架与全局日志管理(代码片段)

重学SpringBoot系列之日志框架与全局日志管理日志框架的体系结构五花八门的日志工具包日志框架日志门面日志门面存在的意义日志框架选型日志级别常见术语概念解析logback日志框架配置application配置文件实现日志配置日志格式... 查看详情