Вход в PostgreSQL - PullRequest
       27

Вход в PostgreSQL

0 голосов
/ 31 октября 2018

1) Я хочу напечатать продолжительность запроса и выписки в одной строке.

log_duration=on печатает только продолжительность без выписок.

2018-10-31 19:09:59.771 IST,"testuser","testdb",20540,"win-test:64478",5bd9b0af.503c,6,"",2018-10-31 19:09:59 IST,3/7,0,LOG,00000,"duration: 0.146 ms",,,,,,,,,""
2018-10-31 19:09:59.774 IST,"testuser","testdb",20540,"win-test:64478",5bd9b0af.503c,7,"",2018-10-31 19:09:59 IST,3/8,0,LOG,00000,"duration: 0.087 ms",,,,,,,,,""
2018-10-31 19:09:59.774 IST,"testuser","testdb",20540,"win-test:64478",5bd9b0af.503c,8,"",2018-10-31 19:09:59 IST,3/8,0,LOG,00000,"duration: 0.009 ms",,,,,,,,,""
2018-10-31 19:09:59.774 IST,"testuser","testdb",20540,"win-test:64478",5bd9b0af.503c,9,"",2018-10-31 19:09:59 IST,3/8,0,LOG,00000,"execute <unnamed>: SET application_name = 'PostgreSQL JDBC Driver'",,,,,,,,,""
2018-10-31 19:09:59.775 IST,"testuser","testdb",20540,"win-test:64478",5bd9b0af.503c,10,"",2018-10-31 19:09:59 IST,3/8,0,LOG,00000,"duration: 0.139 ms",,,,,,,,,"PostgreSQL JDBC Driver"
2018-10-31 19:09:59.806 IST,"testuser","testdb",20540,"win-test:64478",5bd9b0af.503c,11,"",2018-10-31 19:09:59 IST,3/9,0,LOG,00000,"duration: 0.061 ms",,,,,,,,,"PostgreSQL JDBC Driver"
2018-10-31 19:09:59.807 IST,"testuser","testdb",20540,"win-test:64478",5bd9b0af.503c,12,"",2018-10-31 19:09:59 IST,3/9,0,LOG,00000,"duration: 0.009 ms",,,,,,,,,"PostgreSQL JDBC Driver"

Итак, я включил log_min_duration_statement = 0, затем все операторы были напечатаны вместе с продолжительностью, но продолжительность для строки выполнения напечатана на следующей строке. Почему только эта продолжительность напечатана на следующей строке. Как распечатать продолжительность и выписку в одну строку?

2) Когда log_destination - csv, command_tag ​​не печатается в v10.0 и v9.6, но когда я пытался в v9.3, command_tag ​​печатался для каждой строки.

3) Сообщения об ошибках, запрос на обновление и запрос на вставку содержат две строки журнала.

[2018-10-31 19:31:05.175 IST]|[16396]|LOG:  execute <unnamed>: UPDATE ServerStatus SET STATUS=$1 WHERE ( (ServerStatus.SERVERID = $2) )
[2018-10-31 19:31:05.175 IST]|[16396]|DETAIL:  parameters: $1 = '1', $2 = '1'
  • В CSV обе строки доступны в двух разных столбцах.
  • В файле .log оба доступны в виде двух разных сообщений журнала.
  • В журнале событий они оба доступны в виде двух разных сообщений журнала в одном сообщении журнала событий.
  • В системном журнале они оба пересылаются как два разных сообщения журнала.

Как переслать обе строки как одно сообщение в системный журнал и файл .log?

РЕДАКТИРОВАТЬ:

Решение

1) Я мог бы вывести продолжительность и оператор в одной строке, используя приведенную ниже конфигурацию, но он печатает даже операторы parse и bind, а не только оператор execute.

log_min_duration_statement = 0
log_statement = 'none'
...