p6spy2.x配置为slf4j-log4j输出日志同时到控制台和文件

本文详细介绍了如何使用P6Spy监控SQL语句,并通过Log4j进行日志输出配置,包括控制台输出及文件滚动输出的设置方法,有效避免日志重复打印的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spy.properties配置:

     appender = com.p6spy.engine.spy.appender.Slf4JLogger

log4j.properties中配置如下:
##p6spy
log4j.logger.p6spy=info,spyConsole,spyFile
#配置p6spy的日志不重复打印
log4j.additivity.p6spy=false

#配置p6spy打印输出到控制台并定义其格式
log4j.appender.spyConsole = org.apache.log4j.ConsoleAppender
log4j.appender.spyConsole.Target=System.out
log4j.appender.spyConsole.layout = org.apache.log4j.PatternLayout
log4j.appender.spyConsole.layout.ConversionPattern = %m%n

#配置p6spy打印输出到文件并定义其格式
log4j.appender.spyFile = org.apache.log4j.RollingFileAppender
log4j.appender.spyFile.File = logs/spy/spy.log
log4j.appender.spyFile.MaxFileSize = 10MB
log4j.appender.spyFile.layout = org.apache.log4j.PatternLayout
log4j.appender.spyFile.layout.ConversionPattern = %m%n

问题记录:
由于p6spy输出的日志的class的别名为p6spy 所以 log4j.logger.p6spy可指定该类所采取的打印方式

关于日志重复打印问题参考文章:http://www.07net01.com/2015/03/779688.html
log4j.additivity.p6spy=false


关于p6spy基础配置参考上一篇博客:
http://blog.youkuaiyun.com/lk_blog/article/details/46288073

<think>嗯,用户想了解如何在Spring Boot中集成p6spy输出SQL日志。首先,我需要回忆一下p6spy的作用。p6spy是一个数据库监控工具,可以拦截记录数据库操作,方便调试性能分析。Spring Boot集成的话,通常需要添加依赖,配置数据源,然后调整日志输出。 用户可能已经知道Spring Boot的基本配置,但可能对具体步骤不太清楚。首先,我应该检查是否需要添加p6spy的依赖,比如Maven或Gradle的配置。然后,替换原来的数据源配置,比如把`jdbc:mysql://`改成`jdbc:p6spy:mysql://`。可能还需要配置文件,比如spy.properties,来定义日志格式输出方式。 还要考虑日志实现,比如Logback或Log4j2,是否需要排除Spring Boot默认的日志依赖,避免冲突。另外,用户可能想知道如何自定义输出格式,或者过滤某些不需要记录的SQL。比如,在spy.properties里设置exclude参数,排除健康检查的查询。 可能遇到的问题包括依赖冲突,数据源配置错误,或者日志输出。这时候需要提示用户检查依赖是否正确,配置文件是否在正确的位置,比如resources目录下。还要注意p6spy在不同版本的Spring Boot中的兼容性,是否需要指定版本号。 用户的实际需求可能是为了调试SQL语句,或者监控性能,所以可以建议他们结合日志级别调整,或者使用p6spy的其他配置选项,比如记录执行时间,帮助分析慢查询。另外,提醒生产环境谨慎使用,因为日志过多可能影响性能。 总结下来,步骤应该是:添加依赖,修改数据源URL,创建spy.properties,配置日志同时,给出示例配置代码片段,帮助用户更直观地理解。可能还需要说明常见问题解决方法,比如排除多余日志,或者自定义输出格式。</think>SpringBoot集成p6spy实现SQL日志输出的完整步骤如下: 一、添加依赖(Maven示例) ```xml <dependency> <groupId>com.github.gavlyukovskiy</groupId> <artifactId>p6spy-spring-boot-starter</artifactId> <version>1.9.0</version> </dependency> ``` 二、配置数据源 1. 修改`application.yml`中的数据库连接URL: ```yaml spring: datasource: url: jdbc:p6spy:mysql://localhost:3306/test_db # 原连接应为 jdbc:mysql://... ``` 三、创建spy.properties配置文件(src/main/resources/) ```properties # 开启自动刷新配置 autoflush=true # 日志输出格式(自定义示例) logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat # 输出控制台 appender=com.p6spy.engine.spy.appender.StdoutLogger # 记录执行时间(毫秒) executionThreshold=10 ``` 四、验证输出效果 执行查询时会输出完整SQL: ```sql SELECT * FROM user WHERE age > 20; ``` 五、高级配置技巧 1. 过滤不需要记录的SQL: ```properties exclude=SELECT 1,SELECT 1 FROM DUAL # 排除健康检查SQL ``` 2. 自定义日志格式(推荐使用Slf4j): ```properties appender=com.p6spy.engine.spy.appender.Slf4JLogger logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat customLogMessageFormat=%(currentTime) | SQL耗时: %(executionTime)ms | 连接ID: %(connectionId) | 执行语句: %(sql) ``` 注意事项: 1. 生产环境建议禁用executionThreshold或设置较高阈值 2. 与Druid连接池兼容,但需注意版本匹配 3. 多数据源场景需为每个数据源添加p6spy前缀 4. 完整配置参数参考官方文档:http://p6spy.github.io/p6spy/2.0/configandusage.html 通过上述配置,可以在控制台看到格式化后的SQL语句、参数执行时间,这对调试复杂查询性能优化非常有用。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值