Commit 864720a4 authored by Vadim Zeitlin's avatar Vadim Zeitlin Committed by Ronan

Document logging with session::set_logger()

Add description of the more flexible logging mechanism also available
now, in addition to basic logging.
parent 6d6fc7d3
# Logging # Logging
SOCI provides a very basic logging facility. SOCI provides a flexible, but requiring some effort to use, way to log all
queries done by the library and a more limited but very simple way to do it.
## Simple logging
The following members of the `session` class support the basic logging functionality: The following members of the `session` class support the basic logging functionality:
...@@ -24,3 +27,34 @@ Each statement logs its query string before the preparation step (whether explic ...@@ -24,3 +27,34 @@ Each statement logs its query string before the preparation step (whether explic
Note that each prepared query is logged only once, independent on how many times it is executed. Note that each prepared query is logged only once, independent on how many times it is executed.
The `get_last_query` function allows to retrieve the last used query. The `get_last_query` function allows to retrieve the last used query.
## Flexible logging using custom loggers
If the above is not enough, it is also possible to log the queries in exactly
the way you want by deriving your own `my_log_impl` class from
`soci::logger_impl` and implementing its pure virtual `start_query()` and
`do_clone()` methods:
class my_log_impl : public soci::logger_impl
{
public:
virtual void start_query(std::string const & query)
{
... log the given query ...
}
private:
virtual logger_impl* do_clone() const
{
return new my_log_impl(...);
}
};
Then simply pass a new, heap-allocated instance of this class to the `session`
object:
soci::session sql(...);
sql.set_logger(new my_log_impl(...));
and `start_query()` method of the logger will be called for all queries.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment