大家好,我是烤鸭:
这是一篇关于springboot多环境加载yml和logback配置文件。

环境:

开发工具 idea(推荐)/eclipse(对yml支持不好)

jdk  1.8

springboot  1.5.6.RELEASE

1. yml和logback文件

1.1 结构,如图所示:

1.2  application.yml (默认加载的初始化文件)

#开发环境配置
spring:profiles:
#    active: devactive: @profiles.active@

1.3  application-dev/test/pro.yml

logging:level:org.springframework.web: DEBUG,CONSOLEconfig: classpath:logback-dev.xml#查看springboot开启了哪些配置
debug: true#server:
#  port: 8131 #配置程序端口,默认为8080
#  session-timeout: 5000 #用户会话session过期时间,以秒为单位
#  context-path: #配置访问路径,默认为/spring:datasource:name: devurl: jdbc:mysql://localhost:3306/jeesite?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=trueusername: rootpassword: root# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverfilters: statmaxActive: 20initialSize: 1maxWait: 60000minIdle: 1timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: select 'x'testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: truemaxOpenPreparedStatements: 20mybatis:mapper-locations: classpath:com.test.test.mapper/*.xmltype-aliases-package: com.test.test.pojojedis :pool :host : localhostport : 9001password: adminconfig :maxTotal: 100maxIdle: 10maxWaitMillis : 100000
#pagehelper分页插件
pagehelper:helperDialect: mysqlreasonable: truesupportMethodsArguments: trueparams: count=countSql
thread:pool:corePoolSize: 10maxPoolSize: 15queueCapacity: 20

主要是集成了mysql,mybatis,redis,logback。配置了线程池参数。

1.4  logback-dev.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true"><!-- 项目名称 --><property name="PROJECT_NAME" value="bq_interface" /><!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--><property name="LOG_HOME" value="/opt/logs/bq_interface" /><!-- 控制台输出 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><!--<withJansi>true</withJansi>--><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %highlight([%-5level] %logger{50} - %msg%n)</pattern><charset>UTF-8</charset><!--             <charset>GBK</charset> --></encoder></appender><!-- 按照每天生成日志文件 --><appender name="SYSTEM_FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender"><!-- 过滤器,只打印ERROR级别的日志 --><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.system-dev.%d{yyyy-MM-dd}.%i.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>15</MaxHistory><!--日志文件最大的大小--><MaxFileSize>10MB</MaxFileSize></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--><pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern><charset>UTF-8</charset></encoder></appender><logger name="system_error" additivity="true"><appender-ref ref="SYSTEM_FILE"/></logger><!-- 自己打印的日志文件,用于记录重要日志信息 --><!--     <appender name="MY_INFO_FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender"> --><!--         过滤器,只打印ERROR级别的日志 --><!--         <filter class="ch.qos.logback.classic.filter.LevelFilter"> --><!--             <level>INFO</level> --><!--             <onMatch>ACCEPT</onMatch> --><!--             <onMismatch>DENY</onMismatch> --><!--         </filter> --><!--         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> --><!--             日志文件输出的文件名 --><!--             <FileNamePattern>${LOG_HOME}/${PROJECT_NAME}.my_info.%d{yyyy-MM-dd}.%i.log</FileNamePattern> --><!--             日志文件保留天数 --><!--             <MaxHistory>15</MaxHistory> --><!--             日志文件最大的大小 --><!--             <MaxFileSize>10MB</MaxFileSize> --><!--         </rollingPolicy> --><!--         <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> --><!--             格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --><!--             <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] %logger{50} - %msg%n</pattern> --><!--             <charset>UTF-8</charset> --><!--         </encoder> --><!--     </appender> --><!--     <logger name="my_info" additivity="true"> --><!--         <appender-ref ref="MY_INFO_FILE"/> --><!--     </logger> --><!-- 设置Spring&Hibernate日志输出级别 --><logger name="org.springframework" level="WARN" /><logger name="org.mybatis" level="WARN" /><logger name="com.ibatis" level="DEBUG" /><logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" /><logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" /><logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" /><logger name="java.sql.Connection" level="DEBUG" /><logger name="java.sql.Statement" level="DEBUG" /><logger name="java.sql.PreparedStatement" level="DEBUG" /><logger name="com.ruidou.baoqian.mapper" level="DEBUG" /><!-- 开发环境下的日志配置 --><root level="INFO,DEBUG"><appender-ref ref="CONSOLE" /><appender-ref ref="SYSTEM_FILE" /></root>
</configuration>

2.   pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.6.RELEASE</version></parent><groupId>com.test.test</groupId><version>1.0.0-SNAPSHOT</version><artifactId>test_interface</artifactId><packaging>war</packaging><name>test_interface</name><description>test项目</description><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.encoding>UTF-8</maven.compiler.encoding><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.build.locales>zh_CN</project.build.locales></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-core-asl --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-core-asl</artifactId><version>1.9.13</version></dependency><!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.2</version></dependency><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.20</version><scope>provided</scope></dependency><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.0</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.45</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.4</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.35</version></dependency><!-- Testing Dependencies --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>provided</scope></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.8.3</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.7</version></dependency><!-- alibaba的druid数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.11</version></dependency><!-- 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.1.2</version></dependency><!-- alibaba的druid数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.0</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.10</version></dependency></dependencies><profiles><profile><!--本地开发环境--><id>dev</id><properties><profiles.active>dev</profiles.active></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><!--测试环境--><id>test</id><properties><profiles.active>test</profiles.active></properties></profile><profile><!--生产环境--><id>pro</id><properties><profiles.active>pro</profiles.active></properties></profile></profiles><build><finalName>myTest</finalName> <!-- 指定package生成的文件名为my-spring-boot.jar --><filters><filter>src/main/resources/application-${profiles.active}.yml</filter><filter>src/main/resources/logback-${profiles.active}.xml</filter></filters>
<!--         替换${key}内容 --><resources><resource><filtering>true</filtering>
<!--                 要到达最底层目录 --><directory>src/main/resources/</directory></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><addClasspath>true</addClasspath><useUniqueVersions>false</useUniqueVersions><classpathPrefix>lib/</classpathPrefix><mainClass>com.test.test.TestMainApplication</mainClass></manifest><manifestEntries><version>${project.version}</version></manifestEntries></archive></configuration></plugin></plugins></build>
</project>

中间有很多jar包不需要的,自己删掉吧。

3.  main方法

3.1  TestMainApplication:

/*** @author Binary Wang(https://githpaub.com/binarywang)*/
@SpringBootApplication
public class TestMainApplication {public static void main(String[] args) {SpringApplication.run(RootConfiguration.class, args);}
}

3.2   RootConfiguration:

package com.test.test.config;import com.test.test.constants.IDBConstant;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.stereotype.Controller;import javax.annotation.PostConstruct;
import java.util.concurrent.Executors;@Configuration
@EnableAutoConfiguration
@SpringBootApplication
@ComponentScan(value = "com.test.test", excludeFilters = { @Filter(Controller.class),@Filter(type = FilterType.ASSIGNABLE_TYPE, value = { RootConfiguration.class }) })
@MapperScan({"com.test.test.dao"})
public class RootConfiguration extends SpringBootServletInitializer implements EmbeddedServletContainerCustomizer {//配置tomcat启动端口号@Overridepublic void customize(ConfigurableEmbeddedServletContainer container) {container.setPort(8131);container.setSessionTimeout(30);}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(RootConfiguration.class);}@PostConstructpublic void postConstruct() {IDBConstant.threadPool = Executors.newFixedThreadPool(20);}}

4.  maven打包

clean package -Ptest -U

这样生成的war包就加载指定的yml和logback文件了。-Ptest指的是加载profiles.active=test的配置文件。

之前一直想打成jar包启动

nohup java -jar ./myTest-1.0-SNAPSHOT.jar -profiles.active=pro &

无奈还是无法加载指定的配置文件。

没办法就打成了war包放到tomcat下了。

5.  jenkins/hudson 打包脚本

cd /opt/source/test_interface
rm -rf ./*
cp -rf /root/.hudson/jobs/test_interface/workspace/target/myTest.war ./
kill -9 `ps aux | grep myTest| grep -v grep | awk '{print $2}'`
unzip -o myTest.war
cd /opt/tomcat/tomcat_test_interface/bin/
chmod +x *.sh
sh ./startup.sh

springboot多环境加载yml和logback配置相关推荐

  1. springBoot项目配置文件加载优先级及同配置覆盖问题

    背景: 由于目前网上对于springboot配置文件的加载问题,存在着各种不同的说法.所以导致自己不敢确定到底何种结论才是真正正确的,故专门花费了一些时间进行亲自验证. 验证: 在经过自己对配置文件的 ...

  2. 3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)

    1.外部配置加载顺序 SpringBoot也可以从以下位置加载配置: 优先级从高到低 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置  1.命令行参数 所有的配置都可以在命令行上进行指定 ...

  3. Flutter 实现根据环境加载不同配置

    之前做后端开发的时候,不管是什么语言或者框架,都习惯根据不同环境加载不同的开发配置,比如本地开发的时候,加载local.env配置,部署开发环境的时候加载develop.env配置,通常通过一个环境变 ...

  4. spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃

    spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃 一.springboot devtool ...

  5. SpringBoot启动如何加载application.yml配置文件

    一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...

  6. springboot mybatis 热加载mapper.xml文件(最简单)

    大家好,我是烤鸭: 今天介绍一下springboot mybatis 热加载mapper.xml文件. 本来不打算写的,看到网上比较流行的方式都比较麻烦,想着简化一下. 网上流行的版本. https: ...

  7. springboot 自定义属性文件加载(ConfigDataLocationResolver)

    springboot 自定义属性文件加载 ********************* 相关类与接口 ConfigDataLocationResolver public interface Config ...

  8. Springboot 通过Apollo-client加载配置的过程

    springboot 通过Apollo-client加载配置的过程 1.Apollo-client利用springboot的META-INF/spring.factories将ApolloApplic ...

  9. 微信小程序 运行环境加载失败

    真机调试报错:超时(104),运行环境加载失败(2101) 原因:开发工具太老了,更新就好了,,,,,, 无语

最新文章

  1. mac下-bash: mysql: command not found彻底解决
  2. Android之Apache接口
  3. 使用Ubuntu挂载NTFS格式分区
  4. 势能线段树/吉司机线段树-我没有脑子
  5. 反馈速度小于 200ms!“弹窗”功能让你极速触达用户内心
  6. 商标申请流程图及时间_长沙注册商标面要多长时间及注册申请流程
  7. 【AI视野·今日Robot 机器人论文速览 第十九期】Mon, 5 Jul 2021
  8. win10 html css,Win10创造者更新:Edge支持CSS自定义属性
  9. 微信多开软件苹果版_微信PC版 v3.0.0.57 多开amp;消息防撤回
  10. 游戏需求,猎豹启发!揭秘华为Mate 20 X石墨烯膜散热方案出台始末
  11. HP-lefthand底层结构具体解释及存储灾难数据恢复
  12. 按照长度递减的方式打印 字符串 BackSpace
  13. 隐私问题不想用自己手机收验证码怎么办?
  14. 高级语言程序设计(C语言) 笔记整理
  15. 2017-2018-1 20155228 《信息安全系统设计基础》第一周学习总结
  16. java卸载错误2503_修复控制面板卸载程序时提示错误代码2502、2503的方法
  17. DNS_PROBE_FINISHED_NXDOMAIN错误的解决方法
  18. 移动硬盘不被系统识别的处理
  19. 【自学Python】Windows安装Python
  20. Go实现简易聊天室(群聊)

热门文章

  1. [jQuery] 针对jQuery的优化方法有哪些?
  2. [css] 为什么伪类的content不能被选中?
  3. [js] alert如何让文本换行?
  4. 工作131:根据请求返回报错
  5. 工作51:后端vue学习地址
  6. 前端学习(2000)vue之电商管理系统电商系统之绘制基本面板的结构
  7. 前端学习(1925)vue之电商管理系统电商系统之通过一层for循环渲染
  8. 前端学习(1854)vue之电商管理系统电商系统之git push后出现错误 ![rejected] master -> master(non-fast-forward) error:failed t
  9. 前端学习(1389):多人管理项目9登录功能具体实现
  10. 前端学习(1315):路由