SpringBoot学习(三)--Spring profile多环境方式实现logback日志配置

来源:互联网 发布:去健身房健身软件 编辑:程序博客网 时间:2024/06/03 21:26

版权声明:作者原创,转载请注明出处。

SpringBoot学习系列目录:

  • SpringBoot学习(一)–构建第一个SpringBoot工程
  • SpringBoot学习(二)–集成mybatis+freemark
  • SpringBoot学习(三)–Spring profile多环境方式实现logback日志配置
  • SpringBoot学习(四)–集成shiro实现基础登陆认证和权限管理

继上一篇搭建基础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>

输出为:
这里写图片描述

原创粉丝点击