记录和存储 Postgres 错误?

to log and store Postgres errors?

我需要捕获调用 procedure/function、在 table 中插入记录或删除时到达的所有数据库错误。 就像每当 Postgres 数据库中发生任何错误时,都需要捕获。 谁能给我一些类似的建议或任何小例子来说明这一点。

到目前为止,我一直在使用: 引发通知或引发异常以在控制台日志中引发它。 但我想捕获这些并存储在 table(一些错误日志 table)中。

我在 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'

然后使用所有指定的详细信息创建了 table "postgres_log"。

然后尝试停止并重新启动本地 postgresql 服务器,但我无法重新启动

请多多指教。

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 等等。

然后,跟随 https://www.postgresql.org/docs/current/static/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-CSVLOG

您可以设置 cron 以定期加载它...