【问题标题】:SQL query logging for SQLite?SQLite 的 SQL 查询日志记录?
【发布时间】:2009-10-22 13:50:56
【问题描述】:

我需要记录来自许多使用 SQLite 的应用程序的查询,不仅包括插入/更新/删除,还包括选择和其他查询。在这种情况下,将日志记录引入应用程序在实践中并不是一个可行的解决方案。那么如何在 SQLite 本身中启用查询日志记录呢?

【问题讨论】:

  • 只是添加更多信息,如果您在应用程序中使用 SQLite,您可能应该为整个应用程序使用不同的日志记录系统,而不是要求内置 SQLite 函数.

标签: sql logging sqlite


【解决方案1】:

看看 sqlite Trace API。你必须自己实现回调。

void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);

sqlite3_trace()注册的回调函数在sqlite3_step()运行SQL语句的不同时间被调用。当语句第一次开始执行时,回调返回 SQL 语句文本的 UTF-8 呈现。进入每个触发的子程序时会发生额外的回调。

【讨论】:

  • 好的,所以你基本上是说我需要编写日志记录代码。我想知道是否有人已经为这样的常见用例做到了这一点?
  • 您必须编写命令来调用内置跟踪机制。
  • sqlite3_trace api 不会显示绑定。如果您使用包装类,您可能需要放入自己的 sql 语句和参数日志记录。
  • 只是想加入一个小的 sn-p 用于基本日志记录: void trace_callback( void* udp, const char* sql ) { printf("{SQL} [%s]\n", sql ); } sqlite3_trace(g_dbConf, trace_callback, NULL);
  • 很难写——我的基本尝试stackoverflow.com/questions/66410173/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 2012-07-12
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多