log postgresql consulta banco de dados único

6

Estou usando o PostgreSQL (8.3) com vários bancos de dados ... Eu estou querendo saber se existe alguma maneira de registrar as consultas feitas somente em um dos bancos de dados (nem todos eles) .

Ou para ter um arquivo de log por banco de dados ...

Eu sei que posso usar log_line_prefix = "%d" para registrar o nome do banco de dados e filtrar, mas esse não é o problema.

Devo usar um log_analyzer para contornar isso? Você tem alguma recomendação?

obrigado

    
por arod 04.04.2012 / 17:17

2 respostas

10

Sim, isso é possível, você pode definir o parâmetro de configuração log_statement por banco de dados:

ALTER DATABASE your_database_name
SET log_statement = 'all';
    
por 05.04.2012 / 08:13
1

Se você está registrando declarações via Postgres, não há como fazer isso por banco de dados que eu saiba (menos escrever uma visão que chame um gatilho de registro para toda tabela - obviamente não é realista).

A melhor solução disponível é o que você descreveu (prefixar cada linha com o nome do banco de dados) e alimentar os dados para algo como syslog-ng para dividir o log de consultas por banco de dados.

O pós-processamento do arquivo de log também é uma opção, mas esteja ciente dos possíveis problemas (limites máximos de tamanho de arquivo / sistema operacional, esgotamento de espaço em disco) para clusters de banco de dados com grande número de consultas. Observe também que você paga uma penalidade de desempenho para registrar todas as consultas - qual é o tamanho da penalidade que depende do tamanho das consultas ...

    
por 04.04.2012 / 19:52

Tags