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>
4. 输出分表SQL日志控制,INFO为打开,ERROR为关闭,生产环境不建议输出SQL
<!-- 分表SQL日志控制,INFO为打开,ERROR为关闭-->
<logger name="ShardingSphere-SQL" level="INFO" 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="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>
<!-- 每天一个日志文件,当天的日志文件超过10MB时,生成新的日志文件,当天的日志文件数量超过totalSizeCap/maxFileSize,日志文件就会被回滚覆盖。 -->
<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>
<!-- SQL异步输出 -->
<appender name="SQL_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>512</queueSize>
<appender-ref ref="SQL_LOG"/>
</appender>
<!-- root定义全局日志级别为INFO -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="LOG_FILE"/>
<appender-ref ref="ERROR_LOG"/>
</root>
<!-- logger:可以为特定包或类设置不同的日志级别 -->
<logger name="org.hibernate" level="ERROR"/>
<logger name="io.netty" level="ERROR"/>
<logger name="org.springframework" level="WARN"/>
<logger name="org.redisson" level="ERROR"/>
<!-- 耗时统计 -->
<logger name="com.sie.snest.engine.utils.TimeCounter" level="DEBUG"/>
<!-- SQL日志输出到控制台和SQL_LOG文件,additivity=false表示不向root传递打印信息. DEBUG为打开,INFO为关闭 -->
<logger name="com.sie.snest.engine.db.relationdb.RelationDBAccessor" level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="SQL_LOG"/>
</logger>
<!-- 分表SQL日志控制.INFO为打开;ERROR为关闭 -->
<logger name="ShardingSphere-SQL" level="ERROR" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="SQL_LOG"/>
</logger>
</configuration>
5.生产环境配置SQL异步输出到文件
如果不想输出SQL到控制台,去掉 <appender-ref ref="STDOUT" />
<!-- SQL日志输出到控制台和SQL_LOG文件,DEBUG是开启SQL日志,INFO:为关闭 -->
<logger name="com.sie.snest.engine.db.relationdb.RelationDBAccessor" level="DEBUG" additivity="false">
<appender-ref ref="SQL_ASYNC_LOG" />
</logger>
<!-- 分表SQL日志控制.INFO为打开;ERROR为关闭 -->
<logger name="ShardingSphere-SQL" level="INFO" additivity="false">
<appender-ref ref="SQL_ASYNC_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="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>
<!-- 每天一个日志文件,当天的日志文件超过10MB时,生成新的日志文件,当天的日志文件数量超过totalSizeCap/maxFileSize,日志文件就会被回滚覆盖。 -->
<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>
<!-- SQL异步输出 -->
<appender name="SQL_ASYNC_LOG" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>512</queueSize>
<appender-ref ref="SQL_LOG"/>
</appender>
<!-- root定义全局日志级别为INFO -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="LOG_FILE"/>
<appender-ref ref="ERROR_LOG"/>
</root>
<!-- logger:可以为特定包或类设置不同的日志级别 -->
<logger name="org.hibernate" level="ERROR"/>
<logger name="io.netty" level="ERROR"/>
<logger name="org.springframework" level="WARN"/>
<logger name="org.redisson" level="ERROR"/>
<!-- 耗时统计 -->
<logger name="com.sie.snest.engine.utils.TimeCounter" level="DEBUG"/>
<!-- SQL日志输出到控制台和SQL_LOG文件,additivity=false表示不向root传递打印信息. DEBUG为打开,INFO为关闭 -->
<logger name="com.sie.snest.engine.db.relationdb.RelationDBAccessor" level="DEBUG" additivity="false">
<appender-ref ref="SQL_ASYNC_LOG"/>
</logger>
<!-- 分表SQL日志控制.INFO为打开;ERROR为关闭 -->
<logger name="ShardingSphere-SQL" level="INFO" additivity="false">
<appender-ref ref="SQL_ASYNC_LOG"/>
</logger>
</configuration>