问题
公司架构用了p6spy来输出sql语句,我在IDEA用的时候正常,但是发布到测试和产线会一直输出info日志:[XNIO-1 task-1] p6spy :
如下,改了各种日志级别都不起作用
各种问题标题都百度过后没找到同样问题的文档
最后是各种配置一个个试了之后发现
spy.properties的这两项配置
appender=com.p6spy.engine.spy.appender.Slf4JLogger
logMessageFormat=com.***.config.P6spySqlFormatConfigure
MessageFormattingStrategy配置是这样的
package com.zhongshi.weightbridge.config;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
import java.text.SimpleDateFormat;
/**
* @program: weightbridge-admin
* @description: SQL格式化输出
* @create: 2022-07-22 16:58
**/
public class P6spySqlFormatConfigure implements MessageFormattingStrategy {
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
@Override
public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String s4) {
return !"".equals(sql.trim()) ? "sql语句: " + sql.replaceAll("[\\t\\n\\r]", "") + ";" : "";
}
}
打印的sql会重复输出一个select 1语句,
抱着解决这个selcet 1 的情况下同时解决了info日志不停输出的问题
解决方案
spy.properties新增配置
# 开启过滤
filter=true
# 包含(select 1)的不打印
exclude=select 1
打印sql的时候就只会打印下面的真实sql语句,而且jar包启动后也不会一直输出[XNIO-1 task-1] p6spy:
了