Postgresql 9.1.24 문서화 | ||||
---|---|---|---|---|
범퍼카 토토 : 문서 : 9.1 : 서식 | up | 47 장. PostgreSQL 코딩 규칙 | PostgreSQL : 문서 : 9.1 : 오류 사설 토토 스타일 안내서 |
서버 내에서 생성 된 스포츠 토토 베트맨, 경고 및 로그 메시지
코드는를 사용하여 작성해야합니다.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
Call은 기본 메시지 텍스트를 제공합니다.
보조 주변의 추가 괄호 세트에 주목하십시오
기능 호출 - 이들은 성가 시지만 구문 적으로입니다
필요한.
여기 더 복잡한 예가 있습니다 :
Ereport (스포츠 토토 베트맨, (errcode (errcode_ambiguous_function), errmsg ( "function %s는 고유하지 않습니다", func_signature_string (funcname, nargs, nil, real_arg_types)), errhint ( "최고의 후보 기능을 선택할 수 없습니다." "명시 적 타입 캐스트를 추가해야 할 수도 있습니다."));
이것은 런타임을 포함시키는 형식 코드를 사용합니다. 메시지 텍스트에 값. 또한 선택 사항"힌트"메시지가 제공됩니다.
사용 가능한 보조 루틴Ereport
are :
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
, 메시지 문자열이 제외하고
국제화에 번역되거나 포함되지 않습니다
메시지 사전. 이것은에 사용되어야합니다."일어날 수 없음"아마도 그렇지 않은 경우
번역 노력을 소비 할 가치가 있습니다.
errmsg_plural (const char
*fmt_singular, const char *fmt_plural, unsigned long n,
...)
errmsg
, 그러나
다양한 복수 형태의 메시지를 지원합니다.fmt_singular는 영어입니다
단일 형식,fmt_plural영어 복수 형식입니다.n는 결정하는 정수 값입니다
어떤 복수 형태가 필요한지, 나머지 주장은
선택한 형식 문자열에 따라 포맷되었습니다. 자세한 내용
정보 참조섹션 48.2.2.
errdetail (const char *msg,
...)
선택 사항을 제공"세부 사항"메시지; 이것은 언제 사용해야합니다
부적절 해 보이는 추가 정보가 있습니다
기본 메시지를 넣으십시오. 메시지 문자열이 처리됩니다
와 같은 방식으로errmsg
.
errdetail_internal (const char *msg,
...)
|errdetail
16921_17233
errdetail_plural (const char
*fmt_singular, const char *fmt_plural, unsigned long n,
...)
errdetail
,
그러나 다양한 복수 형태의 메시지를 지원합니다. 을 위한
자세한 정보 참조섹션 48.2.2.
errdetail_log (const char *msg,
...)
|errdetail
이 문자열이 전제로 만 사용됩니다
서버 로그에 클라이언트에 절대. 둘 다errdetail
(또는 위에 해당 중 하나)
그리고errdetail_log
그때 사용됩니다
하나의 문자열은 클라이언트로, 다른 문자열은 로그로 이동합니다. 이것
너무 보안에 민감한 스포츠 토토 베트맨 세부 사항에 유용합니다
또는 고객에게 전송 된 보고서에 포함하기에는 너무 부피가 커집니다.
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
. 그럼에도 불구하고 있습니다
충분한 내부"발생할 수 없음"스포츠 토토 베트맨
시스템에서 확인elog
is
여전히 널리 사용됩니다. 그 메시지가 그 메시지에 선호됩니다
표기법 단순성.
좋은 스포츠 토토 베트맨 메시지 작성에 대한 조언PostgreSQL : 문서 : 9.1 : 오류 사설 토토 스타일 안내서.
[1] |
|