이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : 54.2. 서버 내보고 무지개 토토 사이트버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

46.2. 내에서의보고 토토 사이트 섬기는 사람

서버 내에서 생성 된 토토 사이트, 경고 및 로그 메시지 코드는를 사용하여 작성해야합니다.Ereport또는 그 오래된 사촌elog. 이 기능의 사용은 복잡합니다 설명이 필요할 정도로 충분합니다.

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

전형적인 호출Ereport이렇게 보인다 :

Ereport (토토 사이트,
        (errcode (errcode_division_by_zero),
         errmsg ( "division by zero"));

이것은 토토 사이트 심각도 수준을 지정합니다토토 사이트(실행 토토 사이트). 그만큼errcode통화 SQLSTATE 토토 사이트 코드를 지정합니다 정의 된 매크로 사용src/include/utils/errcodes.h. 그만큼errmsg호출은 기본 메시지 텍스트를 제공합니다. 보조 주변의 추가 괄호 세트에 주목하십시오 기능 호출 - 이들은 성가 시지만 구문 적으로입니다 필요한.

여기 더 복잡한 예가 있습니다 :

Ereport (토토 사이트,
        (errcode (errcode_ambiguous_function),
         errmsg ( "function %s는 고유하지 않습니다",
                func_signature_string (funcname, nargs,
                                      실제_arg_types)),
         errhint ( "최고의 후보 기능을 선택할 수 없습니다."
                 "명시 적 타입 캐스트를 추가해야 할 수도 있습니다."));

이것은 런타임을 포함시키는 형식 코드를 사용합니다. 메시지 텍스트에 값. 또한 선택 사항"힌트"메시지가 제공됩니다.

사용 가능한 보조 루틴Ereportare :

  • errcode (sqlerrcode)상태. 이 루틴이 호출되지 않으면 토토 사이트가 발생합니다 식별자 기본값errcode_internal_error토토 사이트 심각도가있을 때 레벨은토토 사이트이상,errcode_warning토토 사이트 레벨이있는 ​​경우경고, 그렇지 않으면 (for통지아래)errcode_successful_completion. 이들 기본값은 종종 편리합니다. 항상 자신을 생각하십시오 생략하기 전에 적절합니다errcode ()전화.

  • errmsg (const char *msg, ...)기본 토토 사이트 메시지 텍스트를 지정합니다 런타임 값을 삽입 할 수 있습니다. 삽입이 지정됩니다 에 의해Sprintf-스타일 형식 코드. 에 의해 허용되는 표준 형식 코드 외에Sprintf, 형식 코드%m토토 사이트를 삽입하는 데 사용할 수 있습니다 에 의해 반환 된 메시지Strerror현재 값의 경우errno. [1] %m해당 항목이 필요하지 않습니다 에 대한 매개 변수 목록errmsg. 메시지 문자열이 실행됩니다getText가능한 현지화 형식 코드가 처리됩니다.

  • errmsg_internal (const char *msg, ...)|errmsg, 메시지 문자열이 제외하고 국제화에 번역되거나 포함되지 않습니다 메시지 사전. 이것은에 사용되어야합니다."발생할 수 없음"아마도 그렇지 않은 경우 번역 노력을 소비 할 가치가 있습니다.

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

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

  • errcontext (const char *msg, ...)일반적으로 직접 호출되지 않습니다Ereport메시지 사이트; 오히려 그것 에서 사용됩니다.ERRER_CONTEXT_STACK콜백 함수 컨텍스트에 대한 정보를 제공합니다 현재 위치와 같은 토토 사이트가 발생한 토토 사이트가 발생했습니다. PL 기능. 메시지 문자열은 동일하게 처리됩니다 에 대한 방법errmsg. 와는 달리 다른 보조 함수는 두 번 이상 호출 될 수 있습니다. perEREPORT전화; 그만큼 이렇게 제공되는 연속적인 현이 연결되어 있습니다 신형 분리.

  • 토토 사이트 (int cursorpos)쿼리 내 토토 사이트의 텍스트 위치를 지정합니다. 끈. 현재 감지 된 토토 사이트에만 유용합니다 쿼리의 어휘 및 구문 분석 단계 처리.

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

  • errcode_for_socket_access ()는 적절한 것을 선택하는 편의 기능입니다 소켓 관련 고장에 대한 SQLSTATE 토토 사이트 식별자 시스템 전화.

  • errhidestmt (bool hide_stmt)를 지정하기 위해 호출 될 수 있습니다진술 :우체국 마스터 로그. 일반적으로 이것은 메시지 인 경우 적절합니다 텍스트는 이미 현재 진술을 포함합니다.

오래된 기능이 있습니다elog여전히 많이 사용됩니다.elog전화 :

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

정확히 다음과 같습니다.

eReport (level, (errmsg_internal ( "format string", ...)));

SQLSTATE 토토 사이트 코드가 항상 기본적으로 표시되고 메시지 문자열은 번역에 적용되지 않습니다. 그러므로,elog만 사용해야합니다 내부 토토 사이트 및 저수준 디버그 로깅. 모든 메시지입니다 일반 사용자에게 관심이있을 가능성이 높습니다Ereport. 그럼에도 불구하고 있습니다 충분한 내부"발생할 수 없음"토토 사이트 시스템에서 확인elogis 여전히 널리 사용됩니다. 그 메시지가 그 메시지에 선호됩니다 표기법 단순성.

좋은 토토 사이트 메시지 작성에 대한 조언PostgreSQL : 문서 : 8.3 : 오류 토토 사이트 스타일 안내서.

노트

[1]

Ereport전화에 도달했습니다. 의 변화errno보조보고 내에서 루틴은 영향을 미치지 않습니다. 당신이라면 그것은 사실이 아닙니다 글을 썼다Strerror (errno)명시 적으로errmsg's 매개 변수 목록; 따라서 그렇게하지 마십시오.