Spring Boot实践--日志的多环境配置

application.properties

########################################### -- 这个优先级1 -- ###########################################
# env
spring.profiles.active=dev
# 应用自定义配置:这个是所有的文件。
## logging.config=classpath:config/logs/logback-spring.xml
########################################### -- conf/application.properties优先级2 -- ###########################################
########################################### -- 这个优先级3 -- ###########################################


#时间格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#时区设置
spring.jackson.time-zone=Asia/Chongqing

application-dev.properties

########################################### -- 这个优先级1 -- ###########################################
#开发环境
server.port=8080
logging.config=classpath:config/logs/logback-dev.xml
########################################### -- 自定义配置 -- ###########################################
###log
log.dev=/Users/apple/logs/dev
log.test=/Users/apple/logs/test
log.pro=/Users/apple/logs/pro

########################################### -- 自定义配置 -- ###########################################

 

方法一:

 logback-all.xml(官网推荐命名logback-spring.xml)

日志布局参考:官网 %C{0}.%c{0}类名加方法。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<!-- 文件输出格式 -->
	<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
	<property name="PATTERN2" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
	<property name="PATTERN3" value="%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n" />
	<property name="PATTERN_COLOR" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(-%5p) %red(${PID:-}) [%15.15t] %green(%-40.40logger{35}) : %m%n" />
	<!-- dev文件路径 -->
	<property name="DEV_FILE_PATH" value="/Users/apple/logs/dev" />
	<!-- test文件路径 -->
	<property name="TEST_FILE_PATH" value="/Users/apple/logs/test" />
	<!-- pro文件路径 -->
	<property name="PRO_FILE_PATH" value="/Users/apple/logs/pro" />
	
	<!-- 开发环境 -->
	<springProfile name="dev">
		<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
			<withJansi>true</withJansi>
			<encoder>
				<pattern>${PATTERN_COLOR}</pattern>
			</encoder>
		</appender>

		<logger name="com.spinach.example" level="debug" />
		<root level="info">
			<appender-ref ref="CONSOLE" />
		</root>
	</springProfile>

	<!-- 测试环境 -->
	<springProfile name="test">
		<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
			<withJansi>true</withJansi>
			<encoder>
				<pattern>${PATTERN_COLOR}</pattern>
			</encoder>
		</appender>
		<!-- 每天产生一个文件 -->
		<appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
			<!-- 文件路径 aaaaa aaa -->
			<file>${TEST_FILE_PATH}/info.log</file>
			<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
				<!-- 文件名称 -->
				<fileNamePattern>${TEST_FILE_PATH}/info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
				<!-- 文件最大保存历史数量 -->
				<maxFileSize>1MB</maxFileSize>
				<totalSizeCap>1MB</totalSizeCap>
			</rollingPolicy>
			<layout class="ch.qos.logback.classic.PatternLayout">
				<pattern>${PATTERN}</pattern>
			</layout>
		</appender>
		<appender name="TEST-FILE2" class="ch.qos.logback.core.rolling.RollingFileAppender">
			<!-- 文件路径 -->
			<file>${TEST_FILE_PATH}/debug.log</file>
			<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
				<!-- 文件名称 -->
				<fileNamePattern>${TEST_FILE_PATH}/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
				<maxFileSize>1MB</maxFileSize>
				<maxHistory>5</maxHistory>
				<totalSizeCap>2MB</totalSizeCap>
			</rollingPolicy>
			<!-- <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
				<maxFileSize>1MB</maxFileSize>
			</triggeringPolicy> -->
			<layout class="ch.qos.logback.classic.PatternLayout">
				<pattern>${PATTERN}</pattern>
			</layout>
		</appender>
		<logger name="com.spinach.example" level="debug" additivity="false" />
		<root level="info">
			<appender-ref ref="TEST-FILE" />
		</root>
		<root level="debug">
			<appender-ref ref="CONSOLE" />
			<appender-ref ref="TEST-FILE2" />
		</root>
	</springProfile>

	<!-- 生产环境 -->
	<springProfile name="prod">
		<appender name="PROD_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
			<file>${PRO_FILE_PATH}</file>
			<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
				<fileNamePattern>${PRO_FILE_PATH}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
			</rollingPolicy>
			<layout class="ch.qos.logback.classic.PatternLayout">
				<pattern>${PATTERN}</pattern>
			</layout>
		</appender>

		<root level="error">
			<appender-ref ref="PROD_FILE" />
		</root>
	</springProfile>
</configuration>

方法二:

logback-dev.xml

<?xml version="1.0" encoding="utf-8"?>
<configuration>
		<!-- 文件输出格式 -->
	<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
	<property name="PATTERN2" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
	<property name="PATTERN3" value="%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n" />
	<property name="PATTERN_COLOR" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(-%5p) %red(${PID:-}) [%15.15t] %green(%-40.40logger{35}) : %m%n" />
		<!-- dev文件路径 -->
	<property name="DEV_FILE_PATH" value="${log.dev}" />
		<!-- test文件路径 -->
	<property name="TEST_FILE_PATH" value="${log.dev}" />
		<!-- pro文件路径 -->
	<property name="PRO_FILE_PATH" value="${log.pro}" />
		
	<!-- 开发环境 -->
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<withJansi>true</withJansi>
		<encoder>
			<pattern>${PATTERN_COLOR}</pattern>
		</encoder>
	</appender>

	<logger name="com.spinach.example" level="debug" />
	<root level="info">
		<appender-ref ref="CONSOLE" />
	</root>
		<!-- <logger name="com.spinach.example" level="debug" />
		<root level="info">
			<appender-ref ref="CONSOLE" />
		</root> -->
</configuration>

 

转载于:https://my.oschina.net/spinachgit/blog/1587427

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值