Spring Boot多环境配置+logback日志配置
属性文件的结构大致是这样的:
application配置
application.properties为默认配置文件,将一些公用的属性配置都配置到这里面
#最大连接数(一般大于maxThreads+acceptCount)
server.tomcat.max-connections=2000
#最大线程数
server.tomcat.max-threads=300
#最大等待数
server.tomcat.accept-count=200
#编码方式
server.tomcat.uri-encoding=UTF-8
#post提交数据最大大小,设置为0不限制
#server.tomcat.max-http-form-post-size=
spring.aop.proxy-target-class=true
spring.datasource.url=jdbc:mysql://localhost:3306/qcx_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
spring.datasource.username=root
spring.datasource.password=root
#mybatis Pagehelper插件
pagehelper.autoDialect=true
pagehelper.closeConn=true
#springboot多配置文件
spring.profiles.active=test
#配置logback
log.file.path=log/8080/demo.log
说明:
spring.profiles.active指定要加载哪一个配置文件,值为application-{value}.properties的value。
以application-test.properties为例:
server.port=8080
log.file.path=log/8080/demo.log
这里可以配置日志输出路径,以及数据源等一些不是公共属性的配置。
jar包方式启动
方式一:
java -jar demo.jar.
方式二:启动时指定加载哪个属性文件:
java -jar demo.jar —spring.profiles.active=test
JVM参数设定
#前台运行
java -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /jar包路径
#后台运行
nohup java -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /jar包路径
参数说明:
-XX:MetaspaceSize=128m (元空间默认大小)
-XX:MaxMetaspaceSize=128m (元空间最大大小)
-Xms1024m (初始分配的堆内存)
-Xmx1024m (最大允许分配的堆内存,按需分配)
-Xmn256m (新生代大小)
-Xss256k (栈最大深度大小)
-XX:SurvivorRatio=8 (新生代分区比例 8:2)
-XX:+UseConcMarkSweepGC (指定使用的垃圾收集器,这里使用CMS收集器)
知识点:JDK8之后把-XX:PermSize 和 -XX:MaxPermGen移除了,取而代之的是
-XX:MetaspaceSize=128m (元空间默认大小)
-XX:MaxMetaspaceSize=128m (元空间最大大小)
JDK 8开始把类的元数据放到本地化的堆内存(native heap)中,这一块区域就叫Metaspace,中文名叫元空间。
使用本地化的内存有什么好处呢?最直接的表现就是java.lang.OutOfMemoryError: PermGen 空间问题将不复存在,因为默认的类的元数据分配只受本地内存大小的限制,也就是说本地内存剩余多少,理论上Metaspace就可以有多大(貌似容量还与操作系统的虚拟内存有关?这里不太清楚),这解决了空间不足的问题。不过,让Metaspace变得无限大显然是不现实的,因此我们也要限制Metaspace的大小:使用-XX:MaxMetaspaceSize参数来指定Metaspace区域的大小。JVM默认在运行时根据需要动态地设置MaxMetaspaceSize的大小。
(摘抄自:https://www.cnblogs.com/sunshouguo/articles/10813320.html)
logback日志配置
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>demo</contextName>
<!--动态配置-->
<springProperty scope="context" name="log.file.path" source="log.file.path"/>
<!-- <property name="log.path" value="${log.file.path}" />-->
<!--输出到控制台-->
<!-- <appender name="console" class="ch.qos.logback.core.ConsoleAppender">-->
<!-- <!– <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
<!-- <level>ERROR</level>-->
<!-- </filter>–>-->
<!-- <encoder>-->
<!-- <pattern>%d{ HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{ 36} - %msg%n</pattern>-->
<!-- <charset>UTF-8</charset>-->
<!-- </encoder>-->
<!-- </appender>-->
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<!-- Console 输出设置 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${ CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${ log.file.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${ contextName}.%d{ yyyy-MM-dd}.log</fileNamePattern>
<!--maxHistory:日志保留时长,totalSizeCap:日志文件上限-->
<maxHistory>120</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{ HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{ 36} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--打印sql-->
<logger name="com.demo.mapper" level="debug"/>
<root level="info">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
</configuration>
遇到的问题:
logback.xml中获取不到log.file.path的值。
解决方式:
将
<property name="log.path" value="${log.file.path}" />
修改为
<springProperty scope="context" name="log.file.path" source="log.file.path"/>
logback.xml名称修改为logback-spring.xml
因为Springboot启动时配置文件加载顺序为
logback.xml->application.properties->logback-spring.xml
参考官网:
https://docs.spring.io/spring-boot/docs/1.5.7.RELEASE/reference/htmlsingle/\#boot-features-custom-log-configuration
还没有评论,来说两句吧...