日志框架的使用------SLF4j+logback(下)

日志的使用

(一) Spring Boot默认的日志级别和配置

日志常用的级别有以下五种:

  • trace
  • debug
  • info
  • warn
  • error

以上级别按照优先级顺序trace<debug<info<warn<error,日志的级别可以调整,当确定了级别以后,logback会输出当前级别以及比当前级别高的日志信息.

Spring Boot默认的日志级别是root,也就是info,如果不在配置文件中修改,日志框架会默认输出info,warn和error级别的日志到控制台,关于修改日志的默认级别会在下文提到.

再说日志的输出格式,日志输出格式中,按照以下的格式输出日志:

  • %d 表示日期时间
  • %thread表示线程名
  • %-5level 级别从左显示5个字符宽度
  • %logger{50} 表示logger名字最长50个字符,负责按照句点分割
  • %msg 日志消息
  • %n 换行符

按照以上格式,日志完整的格式实例如下:

%d{yyyy‐MM‐dd HH:mm:ss.SSS} [%thread] %‐5level %logger{50} ‐ %msg%n

在Spring Boot的配置文件中,我们可以按照以下的配置来修改日志框架的级别,格式以及文件位置:

logging.level.com.atguigu=trace
#logging.path=
# 不指定路径在当前项目下生成springboot.log日志
# 可以指定完整的路径;
#logging.file=G:/springboot.log
# 在当前磁盘的根路径下创建spring文件夹和里面的log文件夹;使用 spring.log 作为默认文件
logging.path=/spring/log
#  在控制台输出的日志的格式
logging.pattern.console=%d{yyyy‐MM‐dd} [%thread] %‐5level %logger{50} ‐ %msg%n
# 指定文件中日志输出的格式
logging.pattern.file=%d{yyyy‐MM‐dd} === [%thread] === %‐5level === %logger{50} ==== %msg%n

关于logging.file和logging.path,以下表格可以作为对比:

logging.file logging.path Example Description
none none 只在控制台输出日志
指定了文件名 none my.log 输出日志到my.log文件
none 指定了目录 /var/log 输出到指定目录的spring.log文件中

(二) 指定自己的配置文件

有的时候,我们需要自己来定制日志的各项属性,Spring Boot支持自定义的日志配置文件,具体的配置有表如下:

Logging System Customization
Logback logback-spring.xml , logback-spring.groovy , logback.xml ,logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml
JDK logging.properties

如果使用日志框架的配置文件格式,配置文件会被日志框架识别,跳过SpringBoot,不能使用某些SpringBoot提供的功能.

logback-spring.xml:日志框架就不直接加载日志的配项,由SpringBoot解析日志配置,可以使用SpringBoot的高级Profile功能

比如多环境输出日志:

<springProfile name="staging">
    <!‐‐ configuration to be enabled when the "staging" profile is active ‐‐>
   可以指定某段配置只在某个环境下生效  
</springProfile>

使用例子如下:

<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!‐‐
        日志输出格式:
%d表示日期时间,            
%thread表示线程名,            
%‐5level:级别从左显示5个字符宽度            
%logger{50} 表示logger名字最长50个字符,否则按照句点分割。             
%msg:日志消息,            
%n是换行符            
        ‐‐>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <springProfile name="dev">
                <pattern>%d{yyyy‐MM‐dd HH:mm:ss.SSS} ‐‐‐‐> [%thread] ‐‐‐> %‐5level
%logger{50} ‐ %msg%n</pattern>
            </springProfile>
            <springProfile name="!dev">
                <pattern>%d{yyyy‐MM‐dd HH:mm:ss.SSS} ==== [%thread] ==== %‐5level
%logger{50} ‐ %msg%n</pattern>
            </springProfile>
        </layout>
    </appender>

(三) 日志框架的切换

在Spring Boot总,默认是使用logback的方式来写入日志的,现在我们想要切换为其他的日志框架,比如说切换为log4j2,只需要改变一下pom文件即可:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
    <exclusions>
        <exclusion>
            <artifactId>spring‐boot‐starter‐logging</artifactId>
            <groupId>org.springframework.boot</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring‐boot‐starter‐log4j2</artifactId>
</dependency>

可以看到,我们派出了logging的依赖,引入了springboot对log4j2的依赖支持,这样在启动的时候就是使用log4j2日志实现,具体相关的说明可以查看SpringBoot官方文档.

总结

在SpringBoot中日志的使用就说到这里,大体来说,日志的使用没有什么难的地方,只要细心,并且多查看文档,就能解决.

猜你喜欢

转载自blog.csdn.net/xiaoyao2246/article/details/82884097
今日推荐