尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Spring Boot 多环境与日志配置

Spring Boot 多环境与日志配置 一、多环境application.properties 是 springboot 在运行中所需要的配置信息。当我们在开发阶段使用自己的机器开发测试的时候需要用的测试服务器测试上线时使用正式环境的服务器。这三种环境需要的配置信息都不一样当我们切换环境运行项目时需要手动的修改多出配置信息非常容易出错。为了解决上述问题springboot 提供多环境配置的机制让开发者非常容易的根据需求而切换不同的配置环境。在 src/main/resources 目录下创建三个配置文件:application-dev.properties用于开发环境 application-test.properties用于测试环境 application-prod.properties用于生产环境我们可以在这个三个配置文件中设置不同的信息application.properties 配置公共的信息。在 application.properties 中配置spring.profiles.activedev表示激活 application-dev.properties 文件配置 springboot 会加载使用 application.properties 和 application-dev.properties 配置文件的信息。同理可将 spring.profiles.active 的值修改成 test 或 prod 达到切换环境的目的。切换项目启动的环境不仅对读取配置文件信息有效也可以对 Bean 有效。当我们需要对不同环境使用不同的 Bean 时可以通过 Profile 注解进行区分如下ConfigurationpublicclassBeanConfiguration{BeanProfile(dev)publicRunnabletest1(){System.out.println(开发环境使用的 Bean);return()-{};}BeanProfile(test)publicRunnabletest2(){System.out.println(测试环境使用的 Bean);return()-{};}BeanProfile(pro)publicRunnabletest3(){System.out.println(生成环境使用的 Bean);return()-{};}}当启动项目后Spring 会根据 spring.profiles.active 的值实例化对应的 Bean。二、日志介绍Spring Boot在所有内部日志中使用Commons Logging但是默认配置也提供了对常用日志的支持如Java Util LoggingLog4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出日志内容。SLF4J —— Simple Logging Facade For Java它是一个针对于各类Java日志框架的统一Facade抽象。Java日志框架众多——常用的有java.util.logging, log4j, logbackcommons-logging, Spring框架使用的是Jakarta Commons Logging APIJCL。而SLF4J定义了统一的日志抽象接口而真正的日志实现则是在运行时决定的——它提供了各类日志框架的绑定。Logback是log4j框架的作者开发的新一代日志框架它效率更高、能够适应诸多的运行环境同时天然支持SLF4J。默认情况下Spring Boot会用Logback来记录日志并用INFO级别输出到控制台。在运行应用程序和其他例子时你应该已经看到很多INFO级别的日志了。三、配置 logbackspring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。如需要自定义文件名称在 application.properties 中配置 logging.config 选项即可。在 src/main/resources 下创建 logback-spring.xml 文件内容如下?xml version1.0 encodingUTF-8?configuration!-- 文件输出格式 --propertynamePATTERNvalue%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n/!-- test文件路径 --propertynameTEST_FILE_PATHvalued:/test.log/!-- pro文件路径 --propertynamePRO_FILE_PATHvalue/opt/test/log/!-- 开发环境 --springProfilenamedevappendernameCONSOLEclassch.qos.logback.core.ConsoleAppenderencoderpattern${PATTERN}/pattern/encoder/appenderloggernamecom.light.springbootleveldebug/rootlevelinfoappender-refrefCONSOLE//root/springProfile!-- 测试环境 --springProfilenametest!-- 每天产生一个文件 --appendernameTEST-FILEclassch.qos.logback.core.rolling.RollingFileAppender!-- 文件路径 --file${TEST_FILE_PATH}/filerollingPolicyclassch.qos.logback.core.rolling.TimeBasedRollingPolicy!-- 文件名称 --fileNamePattern${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.log/fileNamePattern!-- 文件最大保存历史数量 --MaxHistory100/MaxHistory/rollingPolicylayoutclassch.qos.logback.classic.PatternLayoutpattern${PATTERN}/pattern/layout/appenderloggernamecom.light.springbootleveldebug/rootlevelinfoappender-refrefTEST-FILE//root/springProfile!-- 生产环境 --springProfilenameprodappendernamePROD_FILEclassch.qos.logback.core.rolling.RollingFileAppenderfile${PRO_FILE_PATH}/filerollingPolicyclassch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePattern${PRO_FILE_PATH}/warn.%d{yyyy-MM-dd}.log/fileNamePatternMaxHistory100/MaxHistory/rollingPolicylayoutclassch.qos.logback.classic.PatternLayoutpattern${PATTERN}/pattern/layout/appenderrootlevelwarnappender-refrefPROD_FILE//root/springProfile/configuration其中springProfile 标签的 name 属性对应 application.properties 中的 spring.profiles.active 的配置。即 spring.profiles.active 的值可以看作是日志配置文件中对应的 springProfile 是否生效的开关。四、配置 log4j24.1 添加依赖dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId/dependency4.2 配置日志文件spring boot 默认会加载 classpath:log4j2.xml 或者 classpath:log4j2-spring.xml。如需要自定义文件名称在 application.properties 中配置 logging.config 选项即可。log4j2.xml 文件内容如下?xml version1.0 encodingutf-8?configurationproperties!-- 文件输出格式 --propertynamePATTERN%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L] -| %msg%n/property/propertiesappendersConsolenameCONSOLEtargetsystem_outPatternLayoutpattern${PATTERN}//Console/appendersloggersloggernamecom.light.springbootleveldebug/rootlevelinfoappenderrefrefCONSOLE//root/loggers/configurationlog4j2 不能像 logback 那样在一个文件中设置多个环境的配置数据只能命名 3 个不同名的日志文件分别在 application-devapplication-test 和 application-prod 中配置 logging.config 选项。除了在日志配置文件中设置参数之外还可以在 application-*.properties 中设置日志相关的配置logging.config # 日志配置文件路径如 classpath:logback-spring.xml logging.exception-conversion-word # 记录异常时使用的转换词 logging.file # 记录日志的文件名称如test.log logging.level.* # 日志映射如logging.level.rootWARNlogging.level.org.springframework.webDEBUG logging.path # 记录日志的文件路径如d:/ logging.pattern.console # 向控制台输出的日志格式只支持默认的 logback 设置。 logging.pattern.file # 向记录日志文件输出的日志格式只支持默认的 logback 设置。 logging.pattern.level # 用于呈现日志级别的格式只支持默认的 logback 设置。 logging.register-shutdown-hook # 初始化时为日志系统注册一个关闭钩子
返回列表