snippetsqlMinor
Create log file only for my executed queries
Viewed 0 times
filecreatelogexecutedforqueriesonly
Problem
I have been using the following to set up the log file:
After that, for testing I just executed a query then I have seen the log file in
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:
And how can I get these details using queries?
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?
Solution
The
and/or
and leave
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
log_statement in postgresql.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:ALTER USER someuser SET log_statement='all';and/or
ALTER DATABASE dbname SET log_statement='all';and leave
log_statement to 'none' in the global configuration file postgresql.conf.Also when you're superuser, you can enable logging anytime just for your session with:
SET log_statement='all';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
Code Snippets
ALTER USER someuser SET log_statement='all';ALTER DATABASE dbname SET log_statement='all';SET log_statement='all';Context
StackExchange Database Administrators Q#37103, answer score: 3
Revisions (0)
No revisions yet.