springboot多环境加载yml和logback配置

大家好,我是烤鸭:
这是一篇关于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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[css] 请描述下你对translate()方法的理解

[css] 请描述下你对translate()方法的理解 Single length/percentage value一个长度值或百分比表示X轴和Y轴使用一样的值进行二维上的平移。等同于translate() &#xff08;2D 平移&#xff09;函数指定单个值。Two length/percentage values两个长度值或百分比表示在二维上分…

laydate闪退

1,解决方案一&#xff1a;加 trigger: ‘click’ laydate.render({ elem: this ,format:‘yyyy-MM-dd HH:mm:ss’ ,type:‘datetime’ ,trigger: click’ }); 解决方案二&#xff1a; $("#"dateControlId).removeAttr(“lay-key”);

汇编实验二

》实验结论 1.使用Debug将下面的程序写入内存&#xff0c;逐条执行&#xff08;见1-1&#xff09;&#xff0c;根据指令执行后的实际情况填空&#xff08;见1-2&#xff09; p.s. 已经按实验要求将使用 e 命令将内存单元 0021:0 ~0021:7 连续 8 个字节数据修改为 30H, 31H, 32H…

springboot中的拦截器interceptor和过滤器filter,多次获取request参数

大家好&#xff0c;我是烤鸭&#xff1a; 这是一篇关于springboot的拦截器(interceptor)和过滤器(Filter)。 先说一下过滤器和拦截器。区别&#xff1a;1. servlet请求&#xff0c;顺序&#xff1a;Filter ——> interceptor。2. Filter的作用是对所有进行过滤&#xff…

[css] 怎样去除图片自带的边距?

[css] 怎样去除图片自带的边距&#xff1f; 空隙产生的原因&#xff0c;换行符&#xff0c;空格符&#xff0c;制表符等你空白符&#xff0c;字体不为0的情况下&#xff0c;都会产生一个字符的空隙&#xff0c;空格符好会占据一定宽度&#xff0c;使用inline-block会产生元素间…

Java删除list

方案1>&#xff1a;for循环删除&#xff1a;注意从大到小遍历&#xff0c;不是从小到大&#xff1b; /*** 删除选中项*/private void deleteCheckedItem() {// list&#xff1a;初始化所有的数据&#xff1b;count&#xff1a;最后角标int count list.size() - 1 ;//从大到…

Unable to locate the default servlet for serving static content. Please set the 'defaultServletName'

大家好&#xff0c;我是烤鸭。 今天分享一个莫名其妙的异常及解决方式。 环境&#xff1a; tomcat6 jdk 1.6 异常主体&#xff1a; java.lang.IllegalStateException: Unable to locate the default servlet for serving static content. Please set the defaultServletName p…

iptables原理及规则

iptables简介和原理 我们先来了解以下社么是防火墙 防火墙&#xff1a;隔离功能&#xff0c;工作在网络或主机边缘&#xff0c;对进出网络或主机的数据包基于一定的规则检查&#xff0c;并在匹配某规则时由规则定义的行为进行处理的一组功能的组件&#xff0c;基本上的实现都是…

[css] 让你手写一个reset的文件,你应该怎么写?要考虑哪些方面呢?

[css] 让你手写一个reset的文件&#xff0c;你应该怎么写&#xff1f;要考虑哪些方面呢&#xff1f; 肯定首先考虑的是浏览器本身的样式&#xff0c;还有浏览器兼容。margin&#xff0c;padding >0ul,ol list style:nonea,text-decoration:nonefont-size:100%上标&#xff…

利用cookies跳过登陆验证码

前言在爬取某些网页时&#xff0c;登陆界面时经常遇到的一个坎&#xff0c;而现在大多数的网站在登陆时都会要求用户填写验证码。当然&#xff0c;我们可以设计一套机器学习的算法去破解验证码&#xff0c;然而&#xff0c;验证码的形式多种多样&#xff0c;稍微变一下&#xf…

org.apache.ibatis.reflection.ReflectionException: Error instantiating class with invalid types

大家好&#xff0c;我是烤鸭&#xff0c;记录一个初级异常&#xff0c;百度搜索结果不多&#xff1a; Caused by: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.xxx.xxx with invalid types 。 java.lang.NoSuchMethodException: com.xx…

[css] 你知道css的预处理器和后处理器都有哪些吗?它们有什么区别呢?

[css] 你知道css的预处理器和后处理器都有哪些吗&#xff1f;它们有什么区别呢&#xff1f; 目前最主流的 CSS 预处理器&#xff1a;Sass、LESS、Stylus 。优缺点优点&#xff1a;语言级逻辑处理&#xff0c;动态特性&#xff0c;改善项目结构缺点&#xff1a;采用特殊语法&…

[Swift]八大排序算法(八):基数排序

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/ &#xff09;➤GitHub地址&…

推一波JAVA学习公众号

大家好&#xff0c;我是烤鸭&#xff0c;今天不水了。分享一波java学习公众号。从基础到架构都有&#xff0c;另外说一句&#xff0c;注意身体吧。另外说一句&#xff0c;本文不定时更新。1. JAVA思维导图2. 程序员小灰可爱的小仓鼠3. 码农每日一题4. JAVA后端技…

springmvc限流解决方案

本文采用3中限流方案&#xff1a; 1&#xff0c;谷歌的guava框架 2&#xff0c;使用redis技术 3&#xff0c;使用lua redis 技术 限流方案类型 1&#xff0c;令牌桶限流&#xff08;guava&#xff09; 2&#xff0c;计数器限流&#xff08;redis&#xff09; 各位看官可根…

二叉树的三种遍历(递归与非递归) + 层次遍历

<转载于 >>> > 二叉树是一种非常重要的数据结构&#xff0c;很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式&#xff0c;因为树的本身就是用递归定义的&#xff0c;因此采用递归的方法实现三种遍历&#xff0c;不仅代码简洁…

springboot使用mongodb

大家好&#xff0c;我是烤鸭&#xff1a;这是一篇关于springboot项目中使用mongodb。 环境&#xff1a;jdk 1.8springboot 1.5.6.RELEASEmaven 3.5 1. mongodb在springboot中的配置springboot集成这个三方插件就是简单&#xff0c;只需要引入依赖&#xff0c;在properties或者…

[css] 请使用css画一个圆,方法可以多种

[css] 请使用css画一个圆&#xff0c;方法可以多种 <div class"circle"></div>1.border-radius.cirlce{width:10vw; height:10vw; background:gray;border-radius:50%; }2.clip-path.circle{width:10vw; height:10vw; background:gray;clip-path: circl…

springboot中getOutputStream() has already been called for this response和java.io.FileNotFoundException

这个异常挺多人遇到的&#xff0c;不过我看了一下&#xff0c;跟我们的情况都不一样。 1. 流没关闭。 2. 未设置响应头。 3. jsp页面需要清空流。说一下我们遇到的情况。就是一个简单的sprinboot项目。 用的是springboot 1.5.6&#xff0c;本地启动后用花生壳内网映射…

eclipse搜索框太小

解决方式&#xff1a; Window>Preferences>DevStyle>Inline Search 把 use the inline search 取消勾选