spring的logback引用application配置文件的变量

张开发
2026/4/17 15:11:21 15 分钟阅读

分享文章

spring的logback引用application配置文件的变量
一、背景spring项目将日志上传到阿里云需要accessKeyId、accessKeySecret这二个值希望从application.xml文件中读取这二个值但试了很多次都没成功。后来了解到spring配置文件的加载顺序如下logback.xml - application.properties/yml - logback-spring.xml。刚好logback的配置文件名是logback.xml导致配置一直不生效二、解决方案修改配置文件名将logback.xml改成logback-spring.xml。使用springProperty标签如下所示springProperty scopecontext name变量名 sourceapplication中的属性名 defaultValue默认值/3. 代码示例子1application.yml# application.yml spring: application: name: my-order-service server: port: 8080 myapp: log: path: /var/logs/myapp2logback-spring.xmlconfiguration !-- 1. 引用 application.yml 中的属性 -- !-- name: 在 logback 中使用的变量名 -- !-- source: application.yml 中的完整属性路径 -- springProperty scopecontext nameAPP_NAME sourcespring.application.name defaultValueunknown-app/ springProperty scopecontext nameLOG_PATH sourcemyapp.log.path defaultValue./logs/ springProperty scopecontext nameSERVER_PORT sourceserver.port/ !-- 2. 在控制台输出格式中使用变量 -- property nameCONSOLE_LOG_PATTERN value%d{yyyy-MM-dd HH:mm:ss} [${APP_NAME}] [%thread] %-5level %logger{36} - %msg%n/ !-- 控制台 Appender -- appender nameCONSOLE classch.qos.logback.core.ConsoleAppender encoder pattern${CONSOLE_LOG_PATTERN}/pattern /encoder /appender !-- 3. 在文件路径中使用变量 -- appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender file${LOG_PATH}/app.log/file rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePattern${LOG_PATH}/app.%d{yyyy-MM-dd}.log/fileNamePattern /rollingPolicy encoder pattern${CONSOLE_LOG_PATTERN}/pattern /encoder /appender root levelINFO appender-ref refCONSOLE/ appender-ref refFILE/ /root /configuration

更多文章