Spring Boot多环境配置+logback日志配置

爱被打了一巴掌 2023-07-08 06:58 137阅读 0赞

属性文件的结构大致是这样的:
在这里插入图片描述

application配置

application.properties为默认配置文件,将一些公用的属性配置都配置到这里面

  1. #最大连接数(一般大于maxThreads+acceptCount)
  2. server.tomcat.max-connections=2000
  3. #最大线程数
  4. server.tomcat.max-threads=300
  5. #最大等待数
  6. server.tomcat.accept-count=200
  7. #编码方式
  8. server.tomcat.uri-encoding=UTF-8
  9. #post提交数据最大大小,设置为0不限制
  10. #server.tomcat.max-http-form-post-size=
  11. spring.aop.proxy-target-class=true
  12. spring.datasource.url=jdbc:mysql://localhost:3306/qcx_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true
  13. spring.datasource.username=root
  14. spring.datasource.password=root
  15. #mybatis Pagehelper插件
  16. pagehelper.autoDialect=true
  17. pagehelper.closeConn=true
  18. #springboot多配置文件
  19. spring.profiles.active=test
  20. #配置logback
  21. log.file.path=log/8080/demo.log

说明:

spring.profiles.active指定要加载哪一个配置文件,值为application-{value}.properties的value。

以application-test.properties为例:

  1. server.port=8080
  2. log.file.path=log/8080/demo.log

这里可以配置日志输出路径,以及数据源等一些不是公共属性的配置。

jar包方式启动

方式一:
java -jar demo.jar.
方式二:启动时指定加载哪个属性文件:
java -jar demo.jar —spring.profiles.active=test

JVM参数设定

  1. #前台运行
  2. java -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -jar /jar包路径
  3. #后台运行
  4. 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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration scan="true" scanPeriod="60 seconds" debug="false">
  3. <contextName>demo</contextName>
  4. <!--动态配置-->
  5. <springProperty scope="context" name="log.file.path" source="log.file.path"/>
  6. <!-- <property name="log.path" value="${log.file.path}" />-->
  7. <!--输出到控制台-->
  8. <!-- <appender name="console" class="ch.qos.logback.core.ConsoleAppender">-->
  9. <!-- <!– <filter class="ch.qos.logback.classic.filter.ThresholdFilter">-->
  10. <!-- <level>ERROR</level>-->
  11. <!-- </filter>–>-->
  12. <!-- <encoder>-->
  13. <!-- <pattern>%d{ HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{ 36} - %msg%n</pattern>-->
  14. <!-- <charset>UTF-8</charset>-->
  15. <!-- </encoder>-->
  16. <!-- </appender>-->
  17. <!-- 彩色日志 -->
  18. <!-- 彩色日志依赖的渲染类 -->
  19. <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
  20. <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
  21. <conversionRule conversionWord="wEx"
  22. converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
  23. <!-- 彩色日志格式 -->
  24. <property name="CONSOLE_LOG_PATTERN"
  25. 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}}" />
  26. <!-- Console 输出设置 -->
  27. <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
  28. <encoder>
  29. <pattern>${ CONSOLE_LOG_PATTERN}</pattern>
  30. <charset>utf8</charset>
  31. </encoder>
  32. </appender>
  33. <!--输出到文件-->
  34. <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
  35. <file>${ log.file.path}</file>
  36. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  37. <fileNamePattern>${ contextName}.%d{ yyyy-MM-dd}.log</fileNamePattern>
  38. <!--maxHistory:日志保留时长,totalSizeCap:日志文件上限-->
  39. <maxHistory>120</maxHistory>
  40. <totalSizeCap>1GB</totalSizeCap>
  41. </rollingPolicy>
  42. <encoder>
  43. <pattern>%d{ HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{ 36} - %msg%n</pattern>
  44. <charset>UTF-8</charset>
  45. </encoder>
  46. </appender>
  47. <!--打印sql-->
  48. <logger name="com.demo.mapper" level="debug"/>
  49. <root level="info">
  50. <appender-ref ref="console" />
  51. <appender-ref ref="file" />
  52. </root>
  53. </configuration>

遇到的问题:

logback.xml中获取不到log.file.path的值。
解决方式:

  1. <property name="log.path" value="${log.file.path}" />

修改为

  1. <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

发表评论

表情:
评论列表 (有 0 条评论,137人围观)

还没有评论,来说两句吧...

相关阅读