Mysql 在Sequel中有没有办法通过连接解开SQL日志

Mysql 在Sequel中有没有办法通过连接解开SQL日志,mysql,ruby,sequel,Mysql,Ruby,Sequel,我用的是续集gem,效果很好。但是,我正在尝试调试一个多线程错误,因此我激活了日志(在续集级别:。即在创建与数据库的连接时使用记录器)。我的问题是,来自不同连接的所有SQL日志都在日志文件中纠结,并且不知道哪个查询对应于哪个连接。在日志中添加一个连接id或其他东西将非常有用 是否有方法或替代解决方案?如果没有内置的,请尝试使用monkey补丁或更改记录器,或更改对记录器的调用,以便在每个日志行前添加线程ID Sequel中的相关文件为: 基于此,很可能您可以将Logger子类化,并将其加入以使

我用的是续集gem,效果很好。但是,我正在尝试调试一个多线程错误,因此我激活了日志(在续集级别:。即在创建与数据库的连接时使用记录器)。我的问题是,来自不同连接的所有SQL日志都在日志文件中纠结,并且不知道哪个查询对应于哪个连接。在日志中添加一个连接id或其他东西将非常有用


是否有方法或替代解决方案?

如果没有内置的,请尝试使用monkey补丁或更改记录器,或更改对记录器的调用,以便在每个日志行前添加线程ID

Sequel中的相关文件为:

基于此,很可能您可以将Logger子类化,并将其加入以使其工作

如果记录器文档及其代码有任何依据,您可能可以通过重写
add()
方法来执行您想要的操作,例如:

def add(severity, message = nil, progname = nil, &block)
  thread_msg = "thread: #{Thread.current.object_id}"
  progname ||= @progname
  if message.nil?
    if block_given?
      message = yield
    else
      message = progname
      progname = @progname
    end
  end
  message = "#{thread_msg}\n#{message}"
  super(severity, message, progname, &block)
end

这是一个好主意,尽管我希望从一个内置的解决方案。但是,此解决方案允许通过线程而不是通过连接解开缠绕。我的意思是,我试图调试一个问题,当两个不同的线程使用相同的连接时会出现这个问题。我将查看sequel logging.rb文件