이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 54.2. 서버 내보고 무지개 토토버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

46.2. 토토 사이트 보고 서버

서버 내에서 생성된 토토 사이트, 경고 및 로그 메시지 코드는 다음을 사용하여 생성되어야 합니다.ereport또는 그 사촌elog. 이 기능의 사용은 복잡합니다 설명이 필요할 만큼 충분합니다.

모든 메시지에는 두 가지 필수 요소가 있습니다: 심각도 레벨(범위:디버그패닉) 및 기본 메시지 텍스트입니다. 게다가 선택적 요소가 있으며 그 중 가장 일반적인 것은 토토 사이트입니다. SQL 사양의 SQLSTATE 규칙을 따르는 식별자 코드입니다.ereport그 자체는 단지 껍질일 뿐입니다 주로 구문상의 편의를 위해 존재하는 함수입니다. 메시지 생성을 C의 함수 호출처럼 보이게 만들기 소스 코드. 에서 직접 허용하는 유일한 매개변수ereport은 심각도 수준입니다. 기본 메시지 텍스트 및 선택적 메시지 요소는 다음에 의해 생성됩니다. 다음과 같은 보조 기능 호출errmsg, 내부ereport전화하세요.

일반적인 호출ereport아마도 다음과 같습니다:

ereport(토토 사이트,
        (errcode(ERRCODE_DIVISION_BY_ZERO),
         errmsg("0으로 나누기")));

토토 사이트 심각도 수준을 지정합니다.토토 사이트(평범한 토토 사이트).errcode호출이 SQLSTATE 토토 사이트 코드를 지정합니다. 에 정의된 매크로 사용src/include/utils/errcodes.h.errmsgcall은 기본 메시지 텍스트를 제공합니다. 보조 문자를 둘러싼 추가 괄호 세트에 주목하세요. 함수 호출 — 성가시지만 구문적으로는 필요합니다.

다음은 좀 더 복잡한 예입니다:

ereport(토토 사이트,
        (errcode(ERRCODE_AMBIGUOUS_FUNCTION),
         errmsg("%s 함수는 고유하지 않습니다.",
                func_signature_string(funcname, nargs,
                                      실제_인수_유형)),
         errint("최적의 후보 함수를 선택할 수 없습니다. "
                 "명시적인 유형 변환을 추가해야 할 수도 있습니다.")));

이것은 런타임 삽입을 위한 형식 코드의 사용을 보여줍니다. 값을 메시지 텍스트로 변환합니다. 또한 선택사항입니다."힌트"메시지가 제공됩니다.

다음에 사용 가능한 보조 루틴ereport다음은:

  • errcode(sqlerrcode)에 대한 SQLSTATE 토토 사이트 식별자 코드를 지정합니다. 조건. 이 루틴이 호출되지 않으면 토토 사이트가 발생합니다. 식별자의 기본값은ERRCODE_INTERNAL_ERROR토토 사이트 심각도가 레벨은토토 사이트이상,ERRCODE_WARNING토토 사이트 수준이 다음과 같은 경우경고, 그렇지 않은 경우(for공지이하)ERRCODE_SUCCESSFUL_COMPLETION. 반면 이것들은 기본값은 편리한 경우가 많습니다. 항상 기본값이 맞는지 생각해 보세요. 를 생략하기 전에 적절함errcode()전화하세요.

  • errmsg(const char *msg, ...)주요 토토 사이트 메시지 텍스트를 지정합니다. 삽입할 런타임 값입니다. 삽입이 지정됨 으로스프린트f-스타일 형식 코드. 다음에서 허용하는 표준 형식 코드 외에스프린트f, 형식 코드%m토토 사이트를 삽입하는 데 사용할 수 있습니다. 에서 반환한 메시지strerror현재 값에 대해errno. [1] %m다음에 해당 항목이 필요하지 않습니다. 매개변수 목록errmsg. 메시지 문자열이 실행됩니다.gettext이전에 현지화 가능 형식 코드가 처리됩니다.

  • errmsg_internal(const char *msg, ...)다음과 같습니다errmsg, 단, 메시지 문자열은 번역되거나 국제화에 포함되지 않습니다. 메시지 사전. 이것은 다음 용도로 사용되어야 합니다."일어날 수 없는 일입니다"아마도 그렇지 않은 경우 번역 노력을 기울일 가치가 있습니다.

  • errdetail(const char *msg, ...)선택사항 제공"세부사항"메시지; 이것은 다음과 같은 경우에 사용됩니다. 부적절해 보이는 추가 정보가 있습니다. 기본 메시지를 넣으세요. 메시지 문자열이 처리됩니다. 와 같은 방식으로errmsg.

  • errint(const char *msg, ...)선택사항 제공"힌트"메시지; 이것은 다음과 같은 경우에 사용됩니다. 반대로 문제를 해결하는 방법에 대한 제안을 제공합니다. 무엇이 잘못되었는지에 대한 사실적인 세부정보를 제공합니다. 메시지 문자열 와 같은 방식으로 처리됩니다.errmsg.

  • errcontext(const char *msg, ...)일반적으로 다음에서 직접 호출되지 않습니다.ereport메시지 사이트; 오히려 그것 에서 사용됨error_context_stack컨텍스트에 대한 정보를 제공하는 콜백 함수 토토 사이트가 발생한 곳(예: 현재 위치) PL 기능. 메시지 문자열은 동일한 방식으로 처리됩니다. 방법은errmsg. 와 달리 다른 보조 기능은 두 번 이상 호출할 수 있습니다. 당ereport전화; 는 따라서 제공된 연속 문자열은 다음과 연결됩니다. 개행을 분리합니다.

  • errposition(int 커서pos)쿼리 내 토토 사이트의 텍스트 위치를 지정합니다. 문자열. 현재는 다음에서 감지된 토토 사이트에만 유용합니다. 쿼리의 어휘 및 구문 분석 단계 처리 중입니다.

  • errcode_for_file_access()이다 적절한 SQLSTATE를 선택하는 편의 함수 파일 액세스 관련 토토 사이트에 대한 토토 사이트 식별자 시스템 호출. 저장된 것을 사용합니다errno생성할 토토 사이트 코드를 결정합니다. 보통 이 와 함께 사용해야 합니다.%m기본 토토 사이트 메시지 텍스트에.

  • errcode_for_socket_access()은 적절한 것을 선택하는 편의 함수입니다. 소켓 관련 토토 사이트에 대한 SQLSTATE 토토 사이트 식별자 시스템 호출.

  • errhidestmt(bool hide_stmt)억제를 지정하기 위해 호출될 수 있습니다.진술:메시지의 일부 우체국장 로그. 일반적으로 이는 메시지가 다음과 같은 경우에 적합합니다. 텍스트에는 현재 문이 이미 포함되어 있습니다.

이전 기능이 있습니다elog아직도 많이 사용되고 있습니다. 안elog전화:

elog(레벨, "형식 문자열", ...);

정확히 다음과 동일합니다:

ereport(level, (errmsg_internal("형식 문자열", ...)));

SQLSTATE 토토 사이트 코드는 항상 기본값이며, 메시지 문자열은 번역 대상이 아닙니다. 그러므로elog다음 용도로만 사용해야 합니다. 내부 토토 사이트 및 낮은 수준의 디버그 로깅. 어떤 메시지라도 일반 사용자가 관심을 가질 가능성이 있는 내용은 반드시 거쳐야 합니다.ereport. 그럼에도 불구하고 내부적으로는 충분함"일어날 수 없는 일입니다"토토 사이트 시스템에서 확인합니다.elog이다 아직도 널리 사용되고 있습니다. 해당 메시지에 대해 선호됩니다. 표기법의 단순함.

좋은 토토 사이트 메시지 작성에 대한 조언은 다음에서 찾을 수 있습니다.PostgreSQL : 문서 : 8.3 : 오류 토토 사이트 스타일 안내서.

참고

[1]

즉, 당시의 현재 값은ereport전화가 연결되었습니다. 변경 사항errno보조 보고 내에서 루틴은 영향을 미치지 않습니다. 당신이 그렇다면 그것은 사실이 아닐 것입니다 쓰기로 했어요strerror(errno)명시적으로errmsg의 매개변수 목록; 그러므로 그렇게 하지 마십시오.