当前位置: 首页 > 知识库问答 >
问题:

使用数据源代理有没有办法不记录查询参数?

鄢晔
2023-03-14

我正在寻找一种方法来记录这个框架中包含的所有查询信息http://ttddyy.github.io/datasource-proxy/docs/current/user-guide/index.html#query-然而,我想排除查询参数的日志记录。有没有办法使用数据源代理来实现这一点?如果没有,我还有什么选择?我目前正在使用spring boot 2.1.1。

谢谢,布莱恩

共有1个答案

麹耘豪
2023-03-14

是的。。。配置DatasourceProxy时,您可以添加一个LoggingListener,例如SLF4J:

SLF4JQueryLoggingListener loggingListener = new SLF4JQueryLoggingListener();
loggingListener.setQueryLogEntryCreator(new NoParamsQueryLogEntryCreator);
this.dataSource = ProxyDataSourceBuilder.create(dataSource)
      .name("MyDS")
      .listener(loggingListener)
      .build();

NoParamsQueryLogEntryCreator可以如下所示:

public class NoParamsQueryLogEntryCreator extends DefaultQueryLogEntryCreator {
   @Override
   protected SortedMap<String, String> getParametersToDisplay(List<ParameterSetOperation> params) {
     // here you can manipulate the Parameter List ... obfucating or remove params
     return super.getParametersToDisplay(params);
   }
}
 类似资料:
  • 我们想为房间数据库构建一个过滤器,过滤器选项由用户选择。 i、 e.我们有一个带有字段(id、名称、日期、类型)的实体。用户可以按日期和/或名称过滤列表,其中包含文本和/或类型等于某个值 有办法在房间里做吗?

  • 我想知道是否有一种通用方法可以在记录时屏蔽特定的类字段值?我正在使用龙目山记录器。 例如: 在记录toString()时,我希望能够以通用方式屏蔽该值(我知道我可以重写toString方法,但这需要针对每个类专门完成)

  • 问题内容: 我想知道是否有办法限制cassandra java驱动程序同时执行的查询数量? 当前,我执行许多查询,如下所示: 不幸的是,这可能导致NoHostAvailableException。 谢谢。 问题答案: 您可以使用信号量来限制并发查询的数量: 但是到最后,情况并没有太大的不同:信号量将阻塞(如果使用定时版本的Acquisition,则抛出该信号),而不是在超出容量时得到信号。因此,您

  • 问题内容: Go的范围可以遍历地图和切片,但是我想知道是否有一种方法可以遍历一系列数字,例如: 还是有一种方法可以像Go语言中的Ruby 类那样在Go中表示整数范围? 问题答案: 您可以并且应该只编写一个for循环。简单,明显的代码就是Go方式。

  • 问题内容: 在我的项目中,我们使用了许多批注,这些批注在javadoc API文档中非常有用。 有谁知道在生成的javadocs中包含注释的简单方法?我不想编写自己的javadoc插件。有什么解决办法吗? 问题答案: 参见java.lang.annotation.Documented 表示默认情况下,javadoc和类似工具将记录带有类型的注释。此类型应用于注释其注释会影响其客户端对已注释元素的使

  • 问题内容: 我有一个使用处理程序发布可运行实例的线程。它工作得很好,但是我很好奇我如何将参数传递给Runnable实例使用?也许我只是不了解此功能的工作原理。 为了避免出现“您为什么需要此问题”的问题,我有一个线程化的动画,必须调出UI线程来告诉它实际绘制的内容。 问题答案: 只需使用接受参数的构造函数实现的类就可以了, 您可以使用参数化构造函数创建Runnable类的实例。