2009-09-16 63 views
4

我已經在我的Postgres數據庫(在Ubuntu 32位上運行)中啓用了日誌記錄功能,我只想記錄由用戶應用程序執行的查詢。在Postgres中只記錄用戶查詢

log_destination = 'syslog' 
syslog_facility = 'L*emphasized text*OCAL0' 
syslog_ident = 'postgres' 
log_min_messages = notice 
log_min_duration_statement = 0 
log_duration = off 
log_line_prefix = 'user=%u,db=%d ' 
log_statement = 'none' 

syslog.conf我已經配置到local0盡一切日誌被重定向到/var/log/pgsql:我配置如下Postgres的。

然而,Postgres的是記錄了很多,我不關心的查詢,例如:

WHEN typbasetype=0 THEN oid else typbasetype END AS 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [11-2] basetype 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [11-3] ^I FROM pg_type WHERE oid=1043 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [12-1] user=postgres,db=prueba LOG: duración: 0.361 ms sentencia: SELECT format_type(oid,-1) as typname FROM pg_type WHERE oid = 2950 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [13-1] user=postgres,db=prueba LOG: duración: 0.348 ms sentencia: SELECT CASE WHEN typbasetype=0 THEN oid else typbasetype END AS 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [13-2] basetype 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [13-3] ^I FROM pg_type WHERE oid=2950 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [14-1] user=postgres,db=prueba LOG: duración: 0.451 ms sentencia: SELECT format_type(oid,104) as typname FROM pg_type WHERE oid = 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [14-2] 1043 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [15-1] user=postgres,db=prueba LOG: duración: 0.353 ms sentencia: SELECT CASE WHEN typbasetype=0 THEN oid else typbasetype END AS 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [15-2] basetype 
Sep 16 12:22:28 or-ubuntu postgres[14086]: [15-3] ^I FROM pg_type WHERE oid=1043 

有什麼辦法來防止記錄這些行?

在此先感謝

迭戈

回答

4

您可以更改相應的設置這些角色僅與"ALTER ROLE"

ALTER ROLE <account> SET log_statement = 'all'; 

(或 「log_min_duration_statement = 0」 作爲是在配置)。

+0

我的角色適用於我的應用程序的不同部分。那麼,通過使用該片段,我可以配置Postgres以僅爲該用戶記錄查詢?或者更好的是,阻止一個角色登錄? 這是否也適合用戶使用?例如: ALTER USER ...... – Diego 2009-09-16 17:48:49

0

沒有,從PostgreSQL服務器的角度來看,所有的查詢都是平等的。那些來自某個客戶端,並且服務器無法知道您感興趣的內容。

您可能是最好的後處理日誌文件 - 也許它就像一個簡單的「grep」對他們?

(我這裏假設你想一些查詢記錄 - 如果沒有,你需要設置log_min_duration_statement至-1)如果你的應用程序中使用自己的角色(他們應該)