SpringBoot系列-日志配置进阶篇

点击上方“Java碎碎念”,关注公众号

优质文章,第一时间送达

上一篇文章《SpringBoot系列-日志配置基础篇》介绍了通过日志级别和一些基本的配置,本文将介绍下通过logback-spring.xml配置实现一些更高级的功能。

本文目录

一、配置文件命名规范二、配置文件简介三、SpringProfile使用

一、配置文件命名规范

SpringBoot日志系统有自己的默认配置,覆盖默认配置很简单,只要我们把自己的xml配置文件命名好然后放到resources目录下即可。

各个日志系统的命名规范:

日志系统配置文件名
Logbacklogback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy
Log4j2log4j2-spring.xml or log4j2.xml
JDK (Java Util Logging)logging.properties

SpringBoot官方推荐优先使用带有-spring的文件名作为日志配置(如使用logback-spring.xml,而不是logback.xml),命名为logback-spring.xml的日志配置文件可以使用springProfile、springProperty等标签,从而可以进行一些更灵活的配置。

二、配置文件简介

配置文件精简结构如下:

<configuration>

    <property name="smtpHost" value="mail.qq.com"/>
    <property name="smtpPort" value="465"/>
    <property name="username" value="xxx@qq.com"/>
    <property name="password" value="xxx"/>
    <SpringProperty scope="context" name="appName" source="spring.application.name"/>

    <contextName>日志项目</contextName> 
     <!-- 输出到控制台 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> 
        </encoder>
    </appender>

    <!-- ERROR邮件发送 -->
    <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
        <smtpHost>${smtpHost}</smtpHost>
        <smtpPort>${smtpPort}</smtpPort>
        <username>${username}</username>
        <password>${password}</password>
        <asynchronousSending>true</asynchronousSending>
        <SSL>${SSL}</SSL>
        <to>${email_to}</to>
        <from>${email_from}</from>
        <subject>${email_subject}</subject>
     <!-- html格式-->
        <layout class="ch.qos.logback.classic.html.HTMLLayout">
            <Pattern>%date%level%thread%logger{0}%line%message</Pattern>
        </layout>
     <!-- 这里采用等级过滤器 指定等级相符才发送 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
            <!-- 每个电子邮件只发送一个日志条目 -->
            <bufferSize>1</bufferSize>
        </cyclicBufferTracker>
    </appender> 



    <logger name="org.springframework" level="INFO" />

    <!--测试  -->
    <springProfile name="test">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>

    <!--生产  -->
    <springProfile name="online">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="EMAIL"/>
        </root>
    </springProfile>

</configuration>  

各个配置项的含义如下:

  • contextName

每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用contextName标签设置成其他名字,用于区分不同应用程序的记录

  • property

用来定义变量值的标签,property标签有两个属性,name和value;其中name的值是变量的名称,value的值是变量定义的值。通过property定义的值会被插入到logger上下文中。定义变量后,可以使“${name}”来使用变量。

  • logger

用来设置某一个包或者具体的某一个类的日志打印级别以及指定appender。

  • root

根logger,也是一种logger,且只有一个level属性

  • appender

负责写日志的组件,主要有下面3种:

  1. ConsoleAppender:把日志输出到控制台

  2. FileAppender:把日志输出到文件

  3. RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。它是FileAppender的子类。

三、SpringProfile使用

SpringProfile可以指定某段配置只在某个环境下生效。

比如,如果需要在生产环境打印到控制台和邮件监控,而测试环境只打印日志到控制台,下面的配置就可以实现:

<!--测试  -->
    <springProfile name="test">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
        </root>
    </springProfile>

    <!--生产  -->
    <springProfile name="online">
        <root level="INFO">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="EMAIL"/>
        </root>
    </springProfile>

到此logback-spring.xml中一些常用的配置介绍完了,有任何问题欢迎留言沟通哦!

推荐阅读

1.SpringBoot系列-日志配置基础篇
2.SpringBoot集成JWT实现权限认证
3.一分钟带你了解JWT认证!
4.SpringBoot中如何优雅的读取yml配置文件?
5.SpringBoot中如何灵活的实现接口数据的加解密功能?


限时领取免费Java相关资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高并发分布式、大数据、机器学习等技术。
关注下方公众号即可免费领取:

Java碎碎念公众号
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值