druid用logback记录sql日志
前提说明
logback 日志配置
- 在
application.properties中引入logback配置文件
#Logback日志配置
logging.config=classpath:zf-logback.xml
logging.path=log
- 配置logback的配置文件
zf-logback.xml
<configuration scan="true" scanPeriod="10 seconds">
<include resource="org/springframework/boot/logging/logback/base.xml" />
<!-- 参数定义 -->
<property name="maxFileSize" value="100MB"/>
<property name="maxHistory" value="2"/>
<!-- 日志的级别:debug,info,warn,error -->
<appender name="infoFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>DEBUG</level>
</filter> -->
<File>${LOG_PATH}/info.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/zf-info-%d{yyyyMMdd}.log.%i
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${maxFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%logger{36} 表示logger名字最长36个字符,否则按照句点分割,%msg:日志消息,%n是换行符 -->
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
-%msg%n
</Pattern>
</layout>
</appender>
<appender name="errorFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<File>${LOG_PATH}/error.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/zf-error-%d{yyyyMMdd}.log.%i
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${maxFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%logger{36} 表示logger名字最长36个字符,否则按照句点分割,%msg:日志消息,%n是换行符 -->
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
-%msg%n
</Pattern>
</layout>
</appender>
<root level="INFO">
<appender-ref ref="infoFile" />
<appender-ref ref="errorFile" />
</root>
</configuration>
- 启动项目查看log文件夹下是否有相应log生成
druid使用logback输出sql日志
application.properties中对druid的配置里filters增加slf4j,以便druid识别项目日志记录工具
……
# 在stat,wall过滤的基础上增加slf4j,如果使用的是log4j则做相应的修改
# 配置监控统计拦截的filters,stat:监控统计;wall:用于防火墙,防御sql注入;slf4j:日志记录
spring.datasource.filters = stat,wall,slf4j
……
- 在logback日志记录文件
zf-logback.xml中针对druid做相应的修改
……
<!-- 参数定义 -->
<property name="maxFileSize" value="100MB"/>
<property name="maxHistory" value="2"/>
……
<!-- druid log记录 开始 -->
<appender name="druidFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_PATH}/druid.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/zf-druid-%d{yyyyMMdd}.log.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>${maxFileSize}</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>${maxHistory}</maxHistory>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%logger{36} 表示logger名字最长36个字符,否则按照句点分割,%msg:日志消息,%n是换行符 -->
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36}
-%msg%n
</Pattern>
</layout>
</appender>
<!--配置druid的SQL日志输出-->
<logger name="druid.sql.Statement" level="DEBUG" additivity="false">
<appender-ref ref="druidFile" />
</logger>
<logger name="druid.sql.ResultSet" level="debug" additivity="false">
<appender-ref ref="druidFile"/>
</logger>
<!-- 控制台输出 -->
<logger name="druid.sql.Statement" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<logger name="druid.sql.ResultSet" level="debug" additivity="false">
<appender-ref ref="CONSOLE"/>
</logger>
<!-- druid log记录 结束 -->
……
- 启动项目,执行任何一个数据库查询,查看是否生成了相应的日志
- ps:druid.sql.xxx
包:com.alibaba.druid.filter.logging
类:Slf4jLogFilter
过滤类型:
druid.sql.DataSource :datasource
druid.sql.Connection :connection
druid.sql.Statement :执行的SQL
druid.sql.ResultSet :执行SQL后数据库返回的结果集
参考文件
- 有时候在application.properties中直接配置logging.path没有效果,可以直接在logback.xml中直接指定
.......
<property name="LOG_PATH" value="logs"/>
......
- 动态指定logback日志输出路径
上一篇:spring boot使用druid管理数据库连接池 下一篇:Apache Commons工具类
首页 > 学习总览 > 开发语言 > Java