logback日志配置

1. application-dev.properties 配置文件添加logback配置

logging.config=classpath:logback-spring.xml

2. 复制 logback-spring.xml 到 /src/main/resources目录

3. 输出SQL :修改RelationDBAccessor的日志级别为DEBUG,默认不输出SQL,生产环境不建议输出SQL

<logger name="com.sie.snest.engine.db.relationdb.RelationDBAccessor" level="DEBUG" additivity="false">
	<appender-ref ref="STDOUT" />
	<appender-ref ref="SQL_LOG" />
</logger>

logback-spring.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

	<property name="LOG_BASE" value="logs" />

	<!--控制台日志 -->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</encoder>
	</appender>

	<!--引擎日志 -->
	<appender name="ENGINE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</encoder>
		<file>${LOG_BASE}/metalogfile.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${LOG_BASE}/metalogfile.%d{yyyyMMdd}.%i.log
			</fileNamePattern>
		 <!-- 单个日志文件最多128MB,最多保存60天,最大不能超过30GB -->
			<maxFileSize>128MB</maxFileSize>
			<maxHistory>60</maxHistory>
			<totalSizeCap>30GB</totalSizeCap>
		</rollingPolicy>
	</appender>

	<!--SQL日志 -->
	<appender name="SQL_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</encoder>
		<file>${LOG_BASE}/sqllogfile.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${LOG_BASE}/sqllogfile.%d{yyyyMMdd}.%i.log
			</fileNamePattern>
			<maxFileSize>128MB</maxFileSize>
			<maxHistory>60</maxHistory>
			<totalSizeCap>30GB</totalSizeCap>
		</rollingPolicy>
	</appender>

	<!--业务日志 -->
	<appender name="BUSS_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</encoder>
		<file>${LOG_BASE}/businesslogfile.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${LOG_BASE}/businesslogfile.%d{yyyyMMdd}.%i.log
			</fileNamePattern>
			<maxFileSize>128MB</maxFileSize>
			<maxHistory>60</maxHistory>
			<totalSizeCap>30GB</totalSizeCap>
		</rollingPolicy>
	</appender>

	<!--耗时日志 -->
	<appender name="TimeCounterLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</encoder>
		<file>${LOG_BASE}/timeCounter.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${LOG_BASE}/timeCounter.%d{yyyyMMdd}.%i.log
			</fileNamePattern>
			<maxFileSize>128MB</maxFileSize>
			<maxHistory>60</maxHistory>
			<totalSizeCap>30GB</totalSizeCap>
		</rollingPolicy>
	</appender>

	<!--普通日志 -->
	<appender name="LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</encoder>
		<file>${LOG_BASE}/root.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${LOG_BASE}/root.%d{yyyyMMdd}.%i.log
			</fileNamePattern>
			<maxFileSize>128MB</maxFileSize>
			<maxHistory>60</maxHistory>
			<totalSizeCap>30GB</totalSizeCap>
		</rollingPolicy>
	</appender>

	<!--错误日志 -->
	<appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<encoder>
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n</pattern>
		</encoder>
		<file>${LOG_BASE}/error.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
			<fileNamePattern>${LOG_BASE}/error.%d{yyyyMMdd}.%i.log
			</fileNamePattern>
			<maxFileSize>128MB</maxFileSize>
			<maxHistory>60</maxHistory>
			<totalSizeCap>30GB</totalSizeCap>
		</rollingPolicy>
	</appender>


	<root level="INFO">
		<appender-ref ref="LOG_FILE" />
		<appender-ref ref="STDOUT" />
		<appender-ref ref="ERROR_LOG" />
		<appender-ref ref="SQL_LOG" />
		<appender-ref ref="TimeCounterLog" />
		<appender-ref ref="ENGINE_LOG" />
	</root>


	<logger name="org.hibernate" level="ERROR" />
	<logger name="io.netty" level="ERROR" />
	<logger name="org.springframework" level="WARN" />
	<logger name="org.redisson" level="ERROR" />

    <!-- 分表SQL日志控制,INFO为打开,ERROR为关闭-->
	<logger name="ShardingSphere-SQL" level="ERROR" additivity="false">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="SQL_LOG" />
	</logger>

	<!-- 耗时统计 -->
	<logger name="com.sie.snest.engine.utils.TimeCounter" level="DEBUG">
		<appender-ref ref="TimeCounterLog" />
	</logger>

	<!-- SQL日志输出到控制台和SQL_LOG文件,additivity=false表示不向root传递打印信息 -->
	<logger name="com.sie.snest.engine.db.relationdb.RelationDBAccessor" level="INFO" additivity="false">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="SQL_LOG" />
	</logger>

	<logger name="com.sie.snest" level="INFO">
		<appender-ref ref="BUSS_LOG" />
	</logger>
	<logger name="com.sie.snest.engine" level="INFO">
		<appender-ref ref="ENGINE_LOG" />
	</logger>

</configuration>