To log all queries which are processed on PostgreSQL 8.4 or 9.3 server you have to enable / add / change these lines in your postgresql.conf file:

  • log_statement = all
  • log_min_error_statement = error
  • log_min_duration_statement = 0

 

useful is also:

  • log_line_prefix = ‘%t %c %u ‘ # info on begin of the log line – time sessionid user

 

And reload configuration – it should be sufficient.

If not – restart your postgres server.

But be aware that server log will grow very quickly with this logging. For example – after 2 minutes of tests in my application I have got ca. 70 MB log file.

You will have problems to analyze such log files. On linux you can use some useful commands. On Windows I recommend program LogExpert.

 

Additional note: You can also enable logging in particular session:

  • SELECT set_config(‘log_statement’, ‘all’, true);

 

But it stops when you end this particular session.