我正在使用PostgreSQL(8.3)与多个数据库…我想知道是否有某种方式来logging查询只在一个数据库(不是所有的)。
或者每个数据库有一个日志文件…
我知道我可以使用log_line_prefix = "%d"来logging数据库的名称,然后过滤,但这不是问题。
我应该使用log_analyzer来解决这个问题吗? 你有什么build议 ?
谢谢
是的,这是可能的,你可以设置每个数据库的configuration参数log_statement :
ALTER DATABASE your_database_name SET log_statement = 'all';
如果你通过Postgreslogging语句,那么没有办法按照我意识到的每个数据库来做这个事情(就像写一个调用每个表的logging触发器的视图 – 显然不太现实)。
最好的可用解决scheme就是你所描述的(在数据库名称前面加上每行的前缀),并将数据提供给syslog-ng类的东西,以便将每个数据库的查询logging分开。
对日志文件进行后期处理也是一个选项,但要注意有大量查询的数据库集群的潜在问题(操作系统/文件系统最大文件大小限制,磁盘空间耗尽)。
另外请注意,对于logging所有查询,您确实付出了性能损失 – 惩罚有多大取决于查询的大小。