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

本文主要是介绍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日志配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079373

相关文章

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Java中的JSONObject详解

《Java中的JSONObject详解》:本文主要介绍Java中的JSONObject详解,需要的朋友可以参考下... Java中的jsONObject详解一、引言在Java开发中,处理JSON数据是一种常见的需求。JSONObject是处理JSON对象的一个非常有用的类,它提供了一系列的API来操作J

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据