使用场景
线上环境启动项目时,把程序的日志输出到指定的日志文件中。控制台中不打印日志,这样可以节省磁盘IO资源。而在本地启动时,把日志直接输出到控制台即可,方便排查问题。 此时,就需要根据不同的环境,使用不同的日志输出策略。
方式一:springProfile标签
在同一份日志配置文件中,编写指定的日志输出策略。
1. logback-spring.xml文件
在springProfile标签内编写日志输出规则,标签中的name属性值就是环境的编码。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="logback_app_name" value="jtest/springboot" />
<property name="LOG_PATH" value="${user.home}/${logback_app_name}/logs" />
<!-- 1.控制台输出日志 ConsoleAppender -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默认配置为PatternLayoutEncoder -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}---%magenta([%thread])---%-5level---%blue([%c])---%green([%L])---[%msg]%n</pattern>
</encoder>
</appender>
<!-- 2.输出到文件 -->
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--文件路径:可使用ognl-->
<fileNamePattern>${LOG_PATH}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!--每个文件最大100MB;保存60天;总文件最多20GB-->
<maxFileSize>100MB</maxFileSize>
<maxHistory>60</maxHistory>
<totalSizeCap>20GB</totalSizeCap>
</rollingPolicy>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}---%magenta([%thread])---%-5level---%blue([%c])---%green([%L])---[%msg]%n</pattern>
</encoder>
</appender>
<!-- 线上环境,日志配置 -->
<springProfile name="production">
<root level="info">
<!--日志输出到文件-->
<appender-ref ref="rollingFile"/>
</root>
</springProfile>
<!-- 本地、开发环境,日志配置 可以写logback支持的所有节点 -->
<springProfile name="local,dev">
<root level="INFO">
<!--控制台日志:生产环境建议关掉-->
<appender-ref ref="STDOUT" />
</root>
</springProfile>
</configuration>
在springProfile标签中,可以编写任何logback原生支持的标签。
2. 指定启动环境
两种指定启动环境的方式:
- 在jvm启动参数中加入:-Dspring.profiles.active=环境编码 (推荐)
如:-Dspring.profiles.active=local - 设置属性值:spring.profiles.active=环境编码
可以在application.properties或者application.yml中指定,如在application.properties文件中指定:
这种硬编码方式,发布在不同的环境,需要修改这个属性值。spring.profiles.active=local
方式二:指定日志配置文件
可以根据运行环境的不同,指定加载指定的日志配置文件。
1. 设置logging.config属性
Springboot中设置属性值,一般在application.properties或者application.yml文件中设置。
在application.yml中指定日志配置文件的路径
logging:
config: classpath:logback-spring-${spring.profiles.active}.xml
此时系统就会加载logback-spring-${spring.profiles.active}.xml这个日志配置文件。
可以看到${spring.profiles.active}是一个变量,我们可以在系统启动的时候设置这个值,方法与上面“方式一”中的指定启动环境一样。
参考:官方说明