Postgresql

在 Postgres 中編寫自定義伺服器日誌

  • September 6, 2021

我們設置了一個 Postgres 實例,它直接將日誌寫入 AWS CloudWatch。我們希望能夠編寫自己的日誌以進行自動化處理。不幸的是,我們目前的實驗似乎只在客戶端(呼叫者)端生成日誌:

CREATE or replace FUNCTION logInfo() RETURNS void AS $$
   BEGIN
      raise notice 'Hello World!';
      raise info 'Hello World!';
   END;
$$ LANGUAGE plpgsql;

select logInfo();

有沒有辦法在伺服器端寫日誌?

請記住您的log_min_messagesclient_min_messages設置。plpgsql raise能夠使用級別 DEBUG、LOG、INFO、NOTICE、WARNING 和 EXCEPTION(根據這些設置產生錯誤)。如果要向日誌寫入內容,則需要將其提高到高於log_min_messages.

例如,

raise log 'hello world'

將編寫如下行(log_line_prefix 被我刪除):

LOG:  Hello World!
CONTEXT:  PL/pgSQL function loginfo() line 3 at RAISE
STATEMENT:  select logInfo();

引用自:https://dba.stackexchange.com/questions/299148