本文主要是介绍SpringBoot学习(三)--Spring profile多环境方式实现logback日志配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
版权声明:作者原创,转载请注明出处。
本系列文章目录地址:http://blog.csdn.net/u011961421/article/details/79416510
继上一篇搭建基础web开发框架后,继续学习和完善项目工程。SpringBoot集成了logback,所以只需要配置一下就可以,这里使用自带Spring profile方式进行多环境配置。
简介
Spring profile是Spring 3引入的概念,主要用在项目多环境运行的情况下,通过激活方式实现多环境切换,省去多环境切换时配置参数和文件的修改,相比较Maven profile简单实用,易于上手。并且Spring profile提供了多种激活方法,例如配置文件,注解,jvm参数设置等等
Spring profile多环境配置
1.在根目录(建议以application开头命名方式)新建各环境配置文件,例如图
2.分别配置各环境有差异的配置,共有配置可以配置在application.yml,例如application-dev配置开发环境的日志配置,application-prd配置生产环境的日志配置(具体日志配置下面介绍)。
3.在application.yml加上当前生效的环境配置,例如profiles:active:dev表示当前生效的环境配置为application-dev.yml,事先配好每个环境的配置,切换环境时只需要修改active:dev即可,无需复杂的修改各个配置。
logback日志配置
这里logback-dev环境,使用了简单同步配置的日志输入方式,如下
<?xml version="1.0" encoding="UTF-8"?>
<!-- 不分级别同步文件日志输出配置 -->
<configuration><!-- 日志级别 --><property name="logLevel" value="INFO"></property><!-- 日志地址 --><property name="logPath" value="./logs"></property><!-- 最大保存时间 --><property name="maxHistory" value="10"/><!-- 异步缓冲队列的深度,该值会影响性能.默认值为256 --><property name="queueSize" value="512"></property><!-- 控制台打印日志的相关配置 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><!-- 日志格式 --><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern></encoder></appender><!-- 文件保存日志的相关配置,同步 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 保存日志文件的路径 --><file>${logPath}/cms.log</file><!-- 日志格式 --><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern></encoder><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>${logLevel}</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><!-- 循环政策:基于时间创建日志文件 --><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!-- 日志文件名格式 --><fileNamePattern>${logPath}/cms-%d{yyyy-MM-dd}.log</fileNamePattern><!-- 最大保存时间--><maxHistory>${maxHistory}</maxHistory></rollingPolicy></appender><!--配置mybatis sql 日志--><logger name="com.pf.org.cms.mapper" level="DEBUG"/><!-- 基于INFO处理日志:具体控制台或者文件对日志级别的处理还要看所在appender配置的filter,如果没有配置filter,则使用root配置 --><root level="${logLevel}"><appender-ref ref="STDOUT" /><appender-ref ref="FILE" /></root>
</configuration>
输出为:
logback-prd环境,使用了异步分级别日志输出方式,如下
<?xml version="1.0" encoding="UTF-8"?>
<!-- 分级别异步文件日志输出配置 -->
<configuration><!-- 日志级别 --><property name="logLevel" value="INFO"></property><!-- 日志地址 --><property name="logPath" value="./logs"></property><!-- 最大保存时间 --><property name="maxHistory" value="30"/><!-- 异步缓冲队列的深度,该值会影响性能.默认值为256 --><property name="queueSize" value="512"></property><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg %n</pattern></encoder></appender><appender name="FILE_DEBUG"class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>DEBUG</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><file>${logPath}/cms_debug.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logPath}/cms_debug.log.%d{yyyy-MM-dd}.zip</fileNamePattern><maxHistory>${maxHistory}</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender><appender name="FILE_INFO"class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>INFO</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><file>${logPath}/cms_info.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logPath}/cms_info.log.%d{yyyy-MM-dd}.zip</fileNamePattern><maxHistory>${maxHistory}</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender><appender name="FILE_WARN"class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><file>${logPath}/cms_warn.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logPath}/cms_warn.log.%d{yyyy-MM-dd}.zip</fileNamePattern><maxHistory>${maxHistory}</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender><appender name="FILE_ERROR"class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>ERROR</level><onMatch>ACCEPT</onMatch><onMismatch>DENY</onMismatch></filter><file>${logPath}/cms_error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logPath}/cms_error.log.%d{yyyy-MM-dd}.zip</fileNamePattern><maxHistory>${maxHistory}</maxHistory></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} %-4relative [%thread] %-5level %logger{35} - %msg%n</pattern></encoder></appender><appender name="ASYNC_LOG_DEBUG" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>${queueSize}</queueSize><appender-ref ref="FILE_DEBUG"/></appender><appender name="ASYNC_LOG_INFO" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>${queueSize}</queueSize><appender-ref ref="FILE_INFO"/></appender><appender name="ASYNC_LOG_WARN" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>${queueSize}</queueSize><appender-ref ref="FILE_WARN"/></appender><appender name="ASYNC_LOG_ERROR" class="ch.qos.logback.classic.AsyncAppender"><!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --><discardingThreshold>0</discardingThreshold><!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --><queueSize>${queueSize}</queueSize><appender-ref ref="FILE_ERROR"/></appender><root level="${logLevel}"><!-- appender referenced after it is defined --><appender-ref ref="STDOUT"/><appender-ref ref="ASYNC_LOG_DEBUG"/><appender-ref ref="ASYNC_LOG_INFO"/><appender-ref ref="ASYNC_LOG_WARN"/><appender-ref ref="ASYNC_LOG_ERROR"/></root>
</configuration>
输出为:
这篇关于SpringBoot学习(三)--Spring profile多环境方式实现logback日志配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!