Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một kèo bóng đá euro các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

44.2. Báo cáo kèo bóng đá euro trong Máy chủ

kèo bóng đá euro, cảnh báo và thông báo nhật ký được tạo trong máy chủ Mã phải được tạo bằng cách sử dụngEREPORThoặc anh em họ cũ của nóELOG. Việc sử dụng chức năng này rất phức tạp đủ để yêu cầu một số giải thích.

Có hai yếu tố cần thiết cho mỗi thông báo: Mức độ nghiêm trọng Cấp độ (từDebugđếnPanic) và một văn bản tin nhắn chính. Ngoài ra Có các yếu tố tùy chọn, phổ biến nhất là kèo bóng đá euro Mã định danh tuân theo các quy ước SQLState của SQL Spec.EREPORTBản thân nó chỉ là một vỏ chức năng, tồn tại chủ yếu để thuận tiện cho cú pháp của Làm cho việc tạo tin nhắn trông giống như một cuộc gọi chức năng kèo bóng đá euro c Mã nguồn. Tham số duy nhất được chấp nhận trực tiếp bởiEREPORT11913_12056errmsg, kèo bóng đá euroEREPORTcuộc gọi.

Một cuộc gọi điển hình đếnEREPORTcó thể trông giống như thế này:

EREPORT (kèo bóng đá euro,
        (errcode (errcode_division_by_zero),
         errmsg ("Division by Zero")));

Điều này chỉ định mức độ nghiêm trọng của kèo bóng đá euroERROR(kèo bóng đá euro chạy bộ). Theerrcodecuộc gọi Chỉ định mã kèo bóng đá euro SQLSTATE Sử dụng một macro được xác định trongSRC/bao gồm/Utils/errcodes.h. Theerrmsgcuộc gọi cung cấp văn bản tin nhắn chính. Chú ý tập hợp thêm các dấu ngoặc đơn xung quanh phụ trợ Các cuộc gọi chức năng - Đây là những khó chịu nhưng về mặt cú pháp cần thiết.

Đây là một ví dụ phức tạp hơn:

EREPORT (kèo bóng đá euro,
        (errcode (errcode_ambiguter_function),
         errmsg ("hàm %s không phải là duy nhất",
                func_signature_string (funcname, nargs,
                                      thực tế_arg_types)),
         Errhint ("Không thể chọn chức năng ứng cử viên tốt nhất."
                 "Bạn có thể cần thêm typecasts rõ ràng.")));

Điều này minh họa việc sử dụng mã định dạng để nhúng thời gian chạy giá trị thành một văn bản tin nhắn. Ngoài ra, một tùy chọn"Gợi ý"Tin nhắn được cung cấp.

Các thói quen phụ trợ có sẵn choEREPORTlà:

  • errcode (sqlerrcode)Chỉ định mã định danh kèo bóng đá euro SQLSTATE cho tình trạng. Nếu thói quen này không được gọi, kèo bóng đá euro định danh mặc định làerrCode_Internal_errorKhi mức độ nghiêm trọng của kèo bóng đá euro Cấp độERRORhoặc cao hơn,errcode_warningKhi mức kèo bóng đá euro làcảnh báo, nếu không (choThông báovà bên dưới)errCode_successful_completion. kèo bóng đá euro khi những điều này mặc định thường thuận tiện, luôn luôn nghĩ rằng họ có phải là thích hợp trước khi bỏ quaerrcode ()cuộc gọi.

  • errmsg (const char *msg, ...)Chỉ định văn bản thông báo kèo bóng đá euro chính và có thể giá trị thời gian chạy để chèn vào nó. Chèn được chỉ định quaSprintf-Style Mã định dạng. Ngoài các mã định dạng tiêu chuẩn được chấp nhận bởiSprintf, Mã định dạng%mcó thể được sử dụng để chèn kèo bóng đá euro Tin nhắn được trả về bởiStrerrorĐối với giá trị hiện tại củaerrno. [1] %mKhông yêu cầu bất kỳ mục nhập tương ứng nào kèo bóng đá euro danh sách tham số choerrmsg. Lưu ý rằng chuỗi tin nhắn sẽ được chạy quaGetTextĐể bản địa hóa có thể Mã định dạng được xử lý.

  • ...)giống nhưerrmsg, ngoại trừ chuỗi tin nhắn sẽ không được dịch cũng không được bao gồm kèo bóng đá euro quốc tế hóa Từ điển tin nhắn. Điều này nên được sử dụng cho"Không thể xảy ra"Các trường hợp có lẽ không Đáng giá để sử dụng nỗ lực dịch trên.

  • errdetail (const char *msg, ...)Cung cấp tùy chọn"Chi tiết"Tin nhắn; Điều này sẽ được sử dụng khi có thêm thông tin có vẻ không phù hợp với đặt vào thông điệp chính. Chuỗi tin nhắn được xử lý theo cách tương tự như choerrmsg.

  • errhint (const char *msg, ...)Cung cấp tùy chọn"Gợi ý"Tin nhắn; Điều này sẽ được sử dụng khi đưa ra đề xuất về cách khắc phục sự cố, trái ngược để chi tiết thực tế về những gì đã sai. Chuỗi tin nhắn được xử lý theo cách tương tự nhưerrmsg.

  • errcontext (const char *msg, ...)Thông thường không được gọi trực tiếp từEREPORTTrang web tin nhắn; đúng hơn là nó được sử dụng kèo bóng đá euroERROR_CONTEXT_STACKCác chức năng gọi lại để cung cấp thông tin về ngữ cảnh trong đó xảy ra kèo bóng đá euro, chẳng hạn như vị trí hiện tại trong một Hàm PL. Chuỗi tin nhắn được xử lý chỉ giống nhau Cách như choerrmsg17154_17246EREPORTcuộc gọi; các do đó các chuỗi liên tiếp được cung cấp được kết hợp với Tách Newline.

  • errPocation (int cursorpos)Chỉ định vị trí văn bản của kèo bóng đá euro trong truy vấn sợi dây. Hiện tại nó chỉ hữu ích cho các kèo bóng đá euro được phát hiện trong các giai đoạn phân tích từ vựng và cú pháp của truy vấn xử lý.

  • errcode_for_file_access ()IS một chức năng thuận tiện chọn một sqlstate thích hợp Mã định danh kèo bóng đá euro cho kèo bóng đá euro trong truy cập tệp liên quan đến truy cập tệp cuộc gọi hệ thống. Nó sử dụng đã lưuerrnoĐể xác định mã kèo bóng đá euro nào sẽ tạo. Thường là điều này nên được sử dụng kết hợp với%MTrong văn bản thông báo kèo bóng đá euro chính.

  • errcode_for_socket_access ()là một hàm tiện lợi để chọn một Định danh kèo bóng đá euro SQLSTATE cho kèo bóng đá euro liên quan đến ổ cắm cuộc gọi hệ thống.

Có một hàm cũELOGĐiều đó vẫn được sử dụng rất nhiều. MỘTELOGgọi

ELOG (cấp, "Chuỗi định dạng", ...);

hoàn toàn tương đương với

18678_18738

Lưu ý rằng SQLState Errcode luôn được mặc định và Chuỗi tin nhắn không phải là dịch. Vì thế,ELOGChỉ nên sử dụng kèo bóng đá euro nội bộ và ghi nhật ký gỡ kèo bóng đá euro cấp thấp. Bất kỳ thông báo nào là có khả năng được người dùng thông thường quan tâmEREPORT. Tuy nhiên, có đủ nội bộ"Không thể xảy ra"kèo bóng đá euro kiểm tra trong hệ thốngELOGIS vẫn được sử dụng rộng rãi; nó được ưa thích cho những tin nhắn đó cho nó Đơn giản chứng minh.

Lời khuyên về việc viết các thông báo kèo bóng đá euro tốt có thể được tìm thấy trongPhần 44.3.

Ghi chú

[1]

nghĩa là giá trị hiện tại khiEREPORTđã đạt được cuộc gọi; thay đổi củaerrno19964_20083Strerror (errno)rõ ràng kèo bóng đá euroerrmsg's Danh sách tham số; Theo đó, không làm như vậy.