Logback中springProfile是什么?触发时机是怎样的?
Logback中springProfile的功能与触发逻辑
问题描述
我想把日志输出到AWS CloudWatch,参考了相关配置代码,其他配置项都理解,但不清楚springProfile的功能,想知道它是什么以及何时会被触发。我的配置代码如下:
<configuration packagingData="true"> <timestamp key="timestamp" datePattern="yyyy-MM-dd-HH-mm-ssSSS"/> <springProperty name="AWS_ACCESS_KEY" source="cloud.aws.credentials.accessKey"/> <springProperty name="AWS_SECRET_KEY" source="cloud.aws.credentials.secretKey"/> <appender name="aws_cloud_watch_log" class="ca.pjer.logback.AwsLogsAppender"> <layout> <pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern> </layout> <logGroupName>Kculter-log</logGroupName> <logStreamUuidPrefix>Kculter-log-</logStreamUuidPrefix> <logRegion>ap-northeast-2</logRegion> <maxBatchLogEvents>50</maxBatchLogEvents> <maxFlushTimeMillis>30000</maxFlushTimeMillis> <maxBlockTimeMillis>5000</maxBlockTimeMillis> <retentionTimeDays>2</retentionTimeDays> <accessKeyId>${AWS_ACCESS_KEY}</accessKeyId> <secretAccessKey>${AWS_SECRET_KEY}</secretAccessKey> </appender> <appender name="application_log" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>[%thread] [%date] [%level] [%file:%line] - %msg%n</pattern> </encoder> </appender> <springProfile name="(local | development)"> <root level="INFO"> <appender-ref ref="application_log"/> <appender-ref ref="aws_cloud_watch_log"/> </root> </springProfile> <springProfile name="(stage | production)"> <root level="INFO"> <appender-ref ref="application_log"/> <appender-ref ref="aws_cloud_watch_log"/> </root> <logger name="com.example" level="DEBUG"> <appender-ref ref="aws_cloud_watch_log"/> </logger> </springProfile> </configuration>
什么是springProfile
springProfile是Spring与Logback集成时提供的扩展标签,核心作用是根据当前Spring应用激活的环境配置文件(Profile),选择性加载对应的日志规则片段。说白了就是给不同环境(本地、开发、生产)配置不同的日志策略,不用修改配置文件就能随环境切换。
何时触发
它的触发完全由当前应用激活的Spring Profile决定:
- 当启动应用时指定的激活Profile,和
springProfile标签的name属性匹配时,标签内部的日志配置就会生效 - 支持多种匹配语法:
- 单个Profile匹配:
name="local",仅激活local时生效 - 多Profile“或”匹配:
name="local | development",激活local或development任意一个就生效 - 排除匹配:
name="!production",只要没激活production就生效 - 多Profile“与”匹配:
name="dev & cloud",同时激活dev和cloud才生效
- 单个Profile匹配:
结合你的配置说明
看你给出的配置:
- 若激活的是
local或developmentProfile:- 根日志级别设为INFO,同时将日志输出到控制台(
application_log)和AWS CloudWatch(aws_cloud_watch_log)
- 根日志级别设为INFO,同时将日志输出到控制台(
- 若激活的是
stage或productionProfile:- 保留和上面一致的根日志配置,额外给
com.example包下的日志设置DEBUG级别,且这部分DEBUG日志仅输出到CloudWatch
- 保留和上面一致的根日志配置,额外给
如何激活Spring Profile
常用的激活方式有三种:
- 启动参数:
java -jar your-app.jar --spring.profiles.active=production - 环境变量:设置
SPRING_PROFILES_ACTIVE=development - 配置文件:在
application.properties中添加spring.profiles.active=local
内容的提问来源于stack exchange,提问作者codingRookie
相关产品推荐
相关产品推荐

