我需要捕获在调用过程/函数,在表中插入记录或删除时到达的所有数据库错误。 类似于Postgres数据库中发生任何错误时,需要捕获它。 任何人都可以向我提出一些相似或任何小例子说明这一点。
直到现在我正在使用: 提升通知或提升异常以在控制台日志中提升它。 但我想捕获这些并存储在一个表(一些错误日志表)中。
我在postgresql.conf中设置了以下参数:
log_destination = 'stderr','csvlog','syslog','eventlog'
logging_collector = on
log_filename = 'tst_log_err-%a.log'
client_min_messages = debug5
log_min_messages = debug5
log_min_error_statement = debug5
log_min_duration_statement = 300ms
log_checkpoints = on
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
log_lock_waits = on
log_statement = 'all'
然后创建包含所有指定详细信息的表“postgres_log”。
然后尝试停止并重新启动本地postgresql服务器,但我无法重新启动
请建议。
答案 0 :(得分:2)
https://www.postgresql.org/docs/current/static/runtime-config-logging.html
将logging_collector
设置为on
,将log_destination
设置为stderr,csvlog
,将log_min_error_statement
设置为NOTICE
(如果您想要更高,则将注意权保存在日志)。例如log_min_error_statement
= NOTICE
这将捕获您rase NOTICE
,raise WARNING
等所有内容; log_min_error_statement
= WARNING
这会捕获您rase WARNING
,raise error
等所有内容。
你可以设置cron来定期加载它......