点击上方“Java碎碎念”,关注公众号
优质文章,第一时间送达
上一篇文章《SpringBoot系列-日志配置基础篇》介绍了通过日志级别和一些基本的配置,本文将介绍下通过logback-spring.xml配置实现一些更高级的功能。
本文目录
一、配置文件命名规范二、配置文件简介三、SpringProfile使用
一、配置文件命名规范
SpringBoot日志系统有自己的默认配置,覆盖默认配置很简单,只要我们把自己的xml配置文件命名好然后放到resources目录下即可。
各个日志系统的命名规范:
日志系统 | 配置文件名 |
---|---|
Logback | logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy |
Log4j2 | log4j2-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种:
ConsoleAppender:把日志输出到控制台
FileAppender:把日志输出到文件
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碎碎念公众号](https://i-blog.csdnimg.cn/blog_migrate/5c33706f563e0e5b1a002b4f9d78dafa.png)