PostgreSQL錯誤日志

日志接口

PG有新舊兩種樣式的接口。

新樣式:

ereport(ERROR,
        (errcode(ERRCODE_UNDEFINED_CURSOR),
         errmsg("portal \"%s\" not found", stmt->portalname),
         ... other errxxx() fields as needed ...));

舊樣式:

elog(ERROR, "portal \"%s\" not found", stmt->portalname);

不論新舊接口,在內(nèi)部都是創(chuàng)建了一個stack entry保存數(shù)據(jù):

/*
 * ErrorData holds the data accumulated during any one ereport() cycle.
 * Any non-NULL pointers must point to palloc'd data.
 * (The const pointers are an exception; we assume they point at non-freeable
 * constant strings.)
 */
typedef struct ErrorData
{
    int         elevel;         /* error level */
    bool        output_to_server;   /* will report to server log? */
    bool        output_to_client;   /* will report to client? */
    bool        show_funcname;  /* true to force funcname inclusion */
    bool        hide_stmt;      /* true to prevent STATEMENT: inclusion */
    bool        hide_ctx;       /* true to prevent CONTEXT: inclusion */
    const char *filename;       /* __FILE__ of ereport() call */
    int         lineno;         /* __LINE__ of ereport() call */
    const char *funcname;       /* __func__ of ereport() call */
    const char *domain;         /* message domain */
    const char *context_domain; /* message domain for context message */
    int         sqlerrcode;     /* encoded ERRSTATE */
    char       *message;        /* primary error message (translated) */
    char       *detail;         /* detail error message */
    char       *detail_log;     /* detail error message for server log only */
    char       *hint;           /* hint message */
    char       *context;        /* context message */
    const char *message_id;     /* primary message's id (original string) */
    char       *schema_name;    /* name of schema */
    char       *table_name;     /* name of table */
    char       *column_name;    /* name of column */
    char       *datatype_name;  /* name of datatype */
    char       *constraint_name;    /* name of constraint */
    int         cursorpos;      /* cursor index into query string */
    int         internalpos;    /* cursor index into internalquery */
    char       *internalquery;  /* text of internally-generated query */
    int         saved_errno;    /* errno at entry */

    /* context containing associated non-constant strings */
    struct MemoryContextData *assoc_context;
} ErrorData;

日志級別

PG的日志級別定義如下:

/* Error level codes */
#define DEBUG5      10          /* Debugging messages, in categories of
                                 * decreasing detail. */
#define DEBUG4      11
#define DEBUG3      12
#define DEBUG2      13
#define DEBUG1      14          /* used by GUC debug_* variables */
#define LOG         15          /* Server operational messages; sent only to
                                 * server log by default. */
#define LOG_SERVER_ONLY 16      /* Same as LOG for server reporting, but never
                                 * sent to client. */
#define COMMERROR   LOG_SERVER_ONLY /* Client communication problems; same as
                                     * LOG for server reporting, but never
                                     * sent to client. */
#define INFO        17          /* Messages specifically requested by user (eg
                                 * VACUUM VERBOSE output); always sent to
                                 * client regardless of client_min_messages,
                                 * but by default not sent to server log. */
#define NOTICE      18          /* Helpful messages to users about query
                                 * operation; sent to client and not to server
                                 * log by default. */
#define WARNING     19          /* Warnings.  NOTICE is for expected messages
                                 * like implicit sequence creation by SERIAL.
                                 * WARNING is for unexpected messages. */
#define ERROR       20          /* user error - abort transaction; return to
                                 * known state */
/* Save ERROR value in PGERROR so it can be restored when Win32 includes
 * modify it.  We have to use a constant rather than ERROR because macros
 * are expanded only when referenced outside macros.
 */
#ifdef WIN32
#define PGERROR     20
#endif
#define FATAL       21          /* fatal error - abort process */
#define PANIC       22          /* take down the other backends with me */

在日志級別大于等于ERROR時朱转,日志接口不會返回。ERROR級別時通過longjmp向上拋出绵患,F(xiàn)ATAL級別時進程退出揍堕,PANIC級別時進程直接abort。

同時PG可以將錯誤消息發(fā)送到客戶端。

日志目的地

PG支持將日志寫到標準輸出胰锌、syslog骗绕、eventlog或者csvlog中。

/* Log destination bitmap */
#define LOG_DESTINATION_STDERR   1
#define LOG_DESTINATION_SYSLOG   2
#define LOG_DESTINATION_EVENTLOG 4
#define LOG_DESTINATION_CSVLOG   8
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末资昧,一起剝皮案震驚了整個濱河市酬土,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌格带,老刑警劉巖诺凡,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異践惑,居然都是意外死亡,警方通過查閱死者的電腦和手機嘶卧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門尔觉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芥吟,你說我怎么就攤上這事侦铜。” “怎么了钟鸵?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵钉稍,是天一觀的道長。 經(jīng)常有香客問我棺耍,道長贡未,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任蒙袍,我火速辦了婚禮俊卤,結果婚禮上,老公的妹妹穿的比我還像新娘害幅。我一直安慰自己消恍,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布以现。 她就那樣靜靜地躺著狠怨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪邑遏。 梳的紋絲不亂的頭發(fā)上佣赖,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音记盒,去河邊找鬼茵汰。 笑死,一個胖子當著我的面吹牛孽鸡,可吹牛的內(nèi)容都是我干的蹂午。 我是一名探鬼主播栏豺,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼豆胸!你這毒婦竟也來了奥洼?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤晚胡,失蹤者是張志新(化名)和其女友劉穎灵奖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體估盘,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡瓷患,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遣妥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擅编。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖箫踩,靈堂內(nèi)的尸體忽然破棺而出爱态,到底是詐尸還是另有隱情,我是刑警寧澤境钟,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布锦担,位于F島的核電站,受9級特大地震影響慨削,放射性物質發(fā)生泄漏洞渔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一缚态、第九天 我趴在偏房一處隱蔽的房頂上張望痘煤。 院中可真熱鬧,春花似錦猿规、人聲如沸衷快。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蘸拔。三九已至,卻和暖如春环葵,著一層夾襖步出監(jiān)牢的瞬間调窍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工张遭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留邓萨,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像缔恳,于是被迫代替她去往敵國和親宝剖。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 我們主要講一下Linux環(huán)境中的系統(tǒng)記帳和系統(tǒng)日志管理以及怎么用一些工具更加方便有效的管理日志信息歉甚。 當我們用上面...
    大福技術閱讀 4,245評論 0 3
  • 比特科技: 存儲万细、數(shù)據(jù)庫、大數(shù)據(jù)技術 ? 最佳日志實踐 http://www.bitstech.net/2014...
    葡萄喃喃囈語閱讀 1,612評論 0 13
  • idea 添加注釋/** 然后回車 選中代碼塊 Ctrl+Shift+/ 重點推薦閱讀:https://www....
    Helen_Cat閱讀 19,818評論 0 37
  • 文檔狀態(tài) 本文檔提供了互聯(lián)網(wǎng)委員會的信息纸泄。它不指定任何一種網(wǎng)絡規(guī)范赖钞。對本文檔的發(fā)布是不受限制的。 摘要 本文描述了...
    頑強的貓尾草閱讀 8,579評論 0 2
  • 原文:https://zhuanlan.zhihu.com/p/27363484?hmsr=toutiao.io&...
    No_21312閱讀 1,142評論 0 12