Postgresql Log message without its statement

error handlingpostgresql

If I want to write a message to the Postgres log I can do this:

DO $$
BEGIN
  RAISE LOG 'Justin Is Awesome';
END $$;

However, it logs the statement as well so I get 5 lines of output instead of one:

2016-07-12 16:38:13 UTC LOG:  Justin Is Awesome
2016-07-12 16:38:13 UTC STATEMENT:  DO $$
  BEGIN
    RAISE LOG 'Justin Is Awesome';
  END $$

I can reduce it to two lines with the following:

2016-07-12 16:36:04 UTC LOG:  Justin Is Awesome
2016-07-12 16:36:04 UTC STATEMENT:  DO $$ BEGIN RAISE LOG 'Justin Is Awesome'; END $$

However is it possible to reduce it down to one? Is there a way to send a line of text to the Postgres log without postgres logging the statement that generated the log?

Best Answer

If you want to suppress the "STATEMENT" information, then you could set log_min_error_statement = fatal (or panic).

If you want to keep the STATEMENT information but compress it into a single line with the main entry, then you could set log_destination = 'csvlog'. Technically it will still be multiple lines, but the internal newlines will be escaped by inclusion within double quotes, which any good csv parser will handle for you.