九,SpringBoot-日志管理(LogBack)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了九,SpringBoot-日志管理(LogBack)相关的知识,希望对你有一定的参考价值。


 一,SpringBoot日志级别

springboot默认使用的日志框架是LogBack,默认INFO级别。

日志依赖:

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-logging</artifactId>

</dependency>

实际开发中,该依赖已经默认依赖了,不需要我们单独再去依赖

SpringBoot日志级别(从低到高):

TRACE<DEBUG<INFO<WARN<ERROR<FATAL<OFF

如果设置为INFO级别,则只会输出比INFO级别高的日志。

SpringBoot默认配置INFO,WARN,ERROR级别的日志输出到控制台。

二,日志配置输出

默认情况下,springboot的日志是输出到控制台的,如果我们想把日志写入到文件中,需要再application.properties(application.yml)文件中设置loggiing.file或logging.path属性。

1,loggin.file  设置文件,可以是绝对路径也可以是相对路径。如:loggin.file=log/objlog.log(相对路径,文件已经目录生成在项目的根目录下)或loggin.file=/log/objlog.log(绝对路径,文件生成系统盘根目录下(window默认c盘,不指定盘的话))

2,loggin.path 设置目录,可以是绝对路径也可以是相对路径。不需要文件名 会在该目录下默认生成spring.log文件,如:loggin.path=/var/log

两者不能同时使用,同时使用时只有loggin.file 生效,默认情k况下,日志文件的大小达到10MB会进行切分,产生新的日志文件

配置日志:

创建appliction.properties 文件,加上以下内容(当application.yml文件和application.properties文件同时存在时,项目启动两个文件配置都会读取到)

#root日志的默认输出级别为debug,其它日志的输出请自行百度

logging.level.root=warn logging.level.org.hibernate=debug  logging.level.org.springframework.web=debug

logging.file=C:/log/springLog/spring_child.log #生成日志文件到C盘下

logging.pattern.console=%dyyyy-MM-dd HH:mm:ss [%thread] %highlight(%-5level) %cyan(%logger36) - %msg%n #控制台输出格式

logging.pattern.file=%dyyyy-MM-dd [%thread] %-5level %logger36 - %msg%n# 日志文件写入格式

项目即可,控制台效果如下:

九,SpringBoot-日志管理(LogBack)_spring

九,SpringBoot-日志管理(LogBack)_xml_02

编辑

日志格式转换字符的具体含义可参考LogBack的官网,里面有详细的讲解,这里就不多做解释了。​​logback中文网|Introduction​

九,SpringBoot-日志管理(LogBack)_xml_03

九,SpringBoot-日志管理(LogBack)_xml_04

编辑

三,自定义日志配置文件

由于springboot默认已经为我们依赖了logback,所以当我们需要修改一些配置时,直接在application文件中修改即可,除此之外我们还可以自定义配置文件对日志系统进行管理。(使用自定义配置文件时,application文件中不必设置日志的相关信息。一切信息在自定义配置文件中设置

根据不同的日志系统,按照相应的规则命名文件即可:

LogBack:logback-spring.xml(logback.xml)  

Log4j:   log4g-spring.xml(log4g.xml)    log4g-spring.properties(log4g.properties)

Log4j2: log4g2-spring.xml(log4g2.xml)

springboot官方推荐使用-spring的文件名作为日志配置。以 -spring命名的文件,springboot可以为它添加一些springboot特有的配置项。

另:可以通过logging.config=classpath:loggin_config.xml 来自定义配置名,一般情况下是不需要去改配置文件名的。有一个好处是可以区分环境,和profile一样。根据运行环境不同使用不同的配置文件。

1.创建logback-spring.xml 文件


<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址,使用绝对路径-->
<property name="LOG_HOME" value="C:/log/springLog/spring_child.logs"/>
<!-- Console 输出设置 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%dyyyy-MM-dd HH:mm:ss.SSS [%thread] %-5level %logger36 - %msg%n</pattern>
<charset>utf8</charset>
</encoder>
</appender>

<!-- 按照每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<fileNamePattern>$LOG_HOME/spring_child.%dyyyy-MM-dd.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%dyyyy-MM-dd HH:mm:ss.SSS [%thread] %-5level %logger36 - %msg%n</pattern>
</encoder>
</appender>

<!-- 异步输出 -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>512</queueSize>
<!-- 添加附加的appender,最多只能添加一个 -->
<appender-ref ref="FILE"/>
</appender>

<logger name="org.springframework.boot" level="DEBUG"/>
<root level="info">
<!--<appender-ref ref="ASYNC"/>-->
<appender-ref ref="FILE"/>
<appender-ref ref="CONSOLE"/>
</root>
</configuration>

关于logback的更多配置可以参考官网给的dmeo。

②,启动项目,查看控制台以及日志文件。



以上是关于九,SpringBoot-日志管理(LogBack)的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot项目中使用Logback进行日志管理

开发搭建环境之springboot配置logback日志管理

springboot :日志管理

Springboot 日志管理配置logback-spring.xml

日志管理,springboot

重学SpringBoot系列之日志框架与全局日志管理