springboot多环境加载yml和logback配置
生活随笔
收集整理的這篇文章主要介紹了
springboot多环境加载yml和logback配置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大家好,我是烤鴨:
這是一篇關于springboot多環(huán)境加載yml和logback配置文件。
環(huán)境:
這是一篇關于springboot多環(huán)境加載yml和logback配置文件。
環(huán)境:
開發(fā)工具 idea(推薦)/eclipse(對yml支持不好)
????? ? jdk? 1.8
springboot? 1.5.6.RELEASE
1. yml和logback文件
? ? 1.1 結構,如圖所示:
? ? 1.2? application.yml (默認加載的初始化文件)
? ??
#開發(fā)環(huán)境配置 spring:profiles: # active: devactive: @profiles.active@? ? 1.3? application-dev/test/pro.yml?? ?主要是集成了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" /><!-- 開發(fā)環(huán)境下的日志配置 --><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><!--本地開發(fā)環(huán)境--><id>dev</id><properties><profiles.active>dev</profiles.active></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><!--測試環(huán)境--><id>test</id><properties><profiles.active>test</profiles.active></properties></profile><profile><!--生產環(huán)境--><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:
? ? 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包啟動
無奈還是無法加載指定的配置文件。
沒辦法就打成了war包放到tomcat下了。
5.? jenkins/hudson 打包腳本
總結
以上是生活随笔為你收集整理的springboot多环境加载yml和logback配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Flutter 长截屏适配 Miui 系
- 下一篇: 蒙提霍尔悖论(三门问题)终极分析(补充)