Is there any built-in function to enable query log in SQLite.
I'm familiar with Trace API, but I want to know if there is any predefined function for it.
There is no easy way to do this in SQLite like there is in e.g. MySQL, but there are some options:
One:
Some wrapper-libraries have something like this built-in. But to find a wrapper library you would probably first need to identify the target language. Perl DBI? Python? C++?
Two:
I would not (in any way) recommend the following for a "production-grade" solution, but if you are mainly experimenting and/or debugging, then you might try examining the rollback journal just prior to the end of each transaction. See here about the rollback journal: http://www.sqlite.org/tempfiles.html How you would detect 'the end of each transaction' would be up to your code and/or the breakpoints in your debugger.
I must emphasize again: what I just mentioned above would be a total hack-around, and I feel dirty even having mentioned it.
Three:
You could ask on the (very active and gracious) sqlite mailing list, but they would probably just reemphasize sqlite3_trace.
... other random thing:
On a somewhat (barely?) related note, when you start a './sqlite3' command prompt session, you can type:
.explain
which enables interesting and instructive verbose output for each query executed at the prompt.
More Info I Just Found:
One of the flags that can be passed to 'sqlite3_config()' is SQLITE_CONFIG_LOG. This is another way (in addition to the trace API) to set a callback and receive status information from the sqlite library periodically. I think it is mainly for error log messages.