[alibaba/druid]sql日志打印 能支持下 LocalDateTime、 LocalDate 等类型吗?

2025-11-17 204 views
0

1、系统用的是 druid + slf4j + mysql + mybatis

2、sql日志打印时,输出格式略奇怪,是关于LocalDateTime字段的,如下 {conn-10003, pstmt-20066} executed. update employee set employee_name = '李四', sex = '男', create_by = 1, create_time = 'java.time.LocalDateTime', deleted = '0' where id = 3

3、create_time = 'java.time.LocalDateTime' 这里输出了一个类名而不是具体的值

4、我debug后,进入包:package com.alibaba.druid.sql.visitor 中的 SQLASTOutputVisitor类, 发现该类中的 public void printParameter(Object param) 函数还没支持 LocalDateTime类型, 到最后只能 输出: print0("'" + param.getClass().getName() + "'");

5、希望能改进

回答

9

@wenshao 1.2.4、1.2.5版本com.alibaba.druid.sql.visitor.SQLASTOutputVisitor#printParameter此方法不支持 LocalDateTime、LocalDate类型输出,请wenshao check

0

多谢大佬,提供的思路。slow log 打印还是不支持 @wenshao 1.2.8 然后我稍微改写了一下com.alibaba.druid.filter.stat.StatFilter类下面的 function buildSlowParameters 605行新增

else if (value instanceof LocalDate) {
                // 重写这行
                DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd");
                String dateStr = ((LocalDate) value).format(fmt);
                out.writeString(dateStr);
            }