目录
一、增加logback
根Pom里增加
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.11.1</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
</dependencies>
在resource里增加logback-spring.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="3 seconds">
<include resource="org/springframework/boot/logging/logback/base.xml" />
<contextName>lab</contextName>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%t] %5p |-%C:%L - %m %n</Pattern>
</layout>
</appender>
<appender name="normalAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/ouer/logs/lab.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>/ouer/logs/%d{yyyy-MM-dd}/lab.%i.log</FileNamePattern>
<MaxHistory>300</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] -%msg%n</pattern>
</encoder>
</appender>
<appender name="errorAppender"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/ouer/logs/lab.error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>/ouer/logs/%d{yyyy-MM-dd}/lab.error.%i.log</FileNamePattern>
<MaxHistory>300</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} [%file:%line] -%msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="normalAppender" />
<appender-ref ref="errorAppender" />
</root>
</springProfile>
<springProfile name="test">
<root level="DEBUG">
<appender-ref ref="normalAppender" />
<appender-ref ref="errorAppender" />
<appender-ref ref="stdout" />
</root>
</springProfile>
</configuration>
二、增加环境参数
设置启动参数
在resource下增加application.yml
spring:
profiles:
active: ${profiles.active}
---
#开发环境配置
spring:
profiles: test
data:
name: test
---
#测试环境配置
spring:
profiles: prod
data:
name: prod
启动类代码修改打印出环境值
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(DemoApplication.class, args);
String[] activeProfiles = ctx.getEnvironment().getActiveProfiles();
for (String profile : activeProfiles) {
System.out.println("Spring Boot profile is:" + profile);
}
}
在controller中打印出test环境下的属性值
@Value("${data.name}")
private String name;
@RequestMapping("/getUser")
public User getUser() {
User user = new User();
user.setAge(10);
user.setName(name);
logger.info("name:{}", name);
return user;
}
三、测试
启动后如下:
环境值改为prod
看log可以看到,当prod时,DEBUG信息不回打印。