I have been using the following to set up the log file:
log_statement='all',
log_collector='on',
log_destination='on',
log_filename='filename'
After that, for testing I just executed a query then I have seen the log file in tools>serverstatus
. Unfortunately it has a lot of anonymous queries including the query which I ran.
How can I filter out the queries which were executed along with my query (anonymous queries)? Is there any possibility to log the affected table information like:
- which table got affected?
- at what time was the query executed?
- what fields got affected?
And how can I get these details using queries?
Best Answer
The
log_statement
inpostgresql.conf
applies to all users and all databases, but if it's not what you want, you may provide per-database and per-user values, with:and/or
and leave
log_statement
to'none'
in the global configuration filepostgresql.conf
.Also when you're superuser, you can enable logging anytime just for your session with:
As to what is logged, it can be configured with log_line_prefix but it doesn't go as far as logging tables and columns names. To log which columns are affected by UPDATEs you'd need to do that in triggers in every table, as in tablelog