一,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=%d{yyyy-MM-dd HH:mm:ss} [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n #控制台输出格式
logging.pattern.file=%d{yyyy-MM-dd} [%thread] %-5level %logger{36} - %msg%n# 日志文件写入格式
项目即可,控制台效果如下:
编辑
日志格式转换字符的具体含义可参考LogBack的官网,里面有详细的讲解,这里就不多做解释了。logback中文网|Introduction
编辑
三,自定义日志配置文件
由于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 文件
<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>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %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.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %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。
②,启动项目,查看控制台以及日志文件。