如何在Rails中关闭sqlite3 'sqlite_master'日志记录?

4

我的开发日志被

SELECT name FROM sqlite_master WHERE type = 'table' AND NOT name = 'sqlite_sequence'

填满了。我想在sqlite3中关闭sqlite_master查询,这样我只能看到有趣的查询。

1个回答

2
这是我如何修复它的。也许还有更好的选择。
仅在Rails 2.3.8上进行了测试。
我向activerecord gem中的SQLiteAdapter类添加了一个log_info方法,覆盖了AbstractAdapter中的同名方法。
      def log_info(sql, name, ms)
        unless sql.match(/sqlite_master/)
          if @logger && @logger.debug?
            name = '%s (%.1fms)' % [name || 'SQL', ms]
            @logger.debug(format_log_entry(name, sql.squeeze(' ')))
          end
        end
      end

因此,任何包含“sqlite_master”的SQL语句都不会被记录。


1
这个很棒!我创建了一个Rails插件来实现它,不过方式更加灵活。它在https://github.com/DavidMikeSimon/shutup_sqlite上。 - DSimon
更新:上述插件现在是一个漂亮的宝石,可在Rails 2和3上运行。 - DSimon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接