20.8. 오류보고 및 로깅

20.8.1. 로그 할 곳

log_destination(String)

PostgreSQL를 포함하여 서버 메시지 로깅을위한 몇 가지 방법을 지원합니다.Stderr, CSVLOG, JSONLOGSyslog. Windows에서EventLog도 지원됩니다. 이 매개 변수를 쉼표로 분리 한 원하는 토토 캔 대상 목록으로 설정하십시오. 기본값은에 토토 캔인하는 것입니다.Stderr만. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

ifCSVLOGlog_destination, 토토 캔 항목이 출력됩니다쉼표 분리 값(CSV) 형식, 토토 캔를 프토토 캔램에로드하는 데 편리합니다. 보다섹션 20.8.4자세한 내용.logging_collectorCSV 형식 로그 출력을 생성하려면 활성화해야합니다.

ifJSONLOGlog_destination, 토토 캔 항목이 출력됩니다JSON형식. 토토 캔를 프토토 캔램에로드하는 데 편리합니다. 보다섹션 20.8.5자세한 내용.logging_collectorJSON- 형식 로그 출력을 생성하려면 활성화해야합니다.

언제든지Stderr, CSVLOG또는JSONLOG포함되어 있습니다. 파일current_logfiles로깅 콜렉터 및 관련 로깅 대상이 현재 사용중인 로그 파일의 위치를 기록하도록 만들어졌습니다. 이는 인스턴스에서 현재 사용중인 로그를 찾는 편리한 방법을 제공합니다. 이 파일의 내용의 예는 다음과 같습니다.

stderr log/postgresql.log
csvlog log/postgresql.csv
jsonlog log/postgresql.json

current_logfiles새 토토 캔 파일이 회전의 효과로 생성 될 때 그리고 언제log_destination다시로드됩니다. 아무것도 제거됩니다Stderr, CSVLOG또는JSONLOGlog_destination및 로깅 수집기가 비활성화 된 시점.

Note

대부분의 UNIX 시스템에서는 시스템 구성을 변경해야합니다Syslog데몬을 사용하기위한 데몬Syslog옵션log_destination. PostgreSQL토토 캔인 할 수 있습니다Syslog시설local0throughLocal7(참조syslog_facility) 그러나 기본값Syslog대부분의 플랫폼에서의 구성은 그러한 모든 메시지를 폐기합니다. 다음과 같은 것을 추가해야합니다.

local0.*/var/log/postgresql

to theSyslog그것을 작동시키기위한 데몬의 구성 파일.

Windows에서EventLog옵션log_destination, Windows 이벤트 뷰어가 이벤트 토토 캔 메시지를 깨끗하게 표시 할 수 있도록 이벤트 소스 및 해당 라이브러리를 운영 체제에 등록해야합니다. 보다토토 커뮤니티 : 문서 : 15 : 19.12. 이벤트 로그 등록 Windows자세한 내용.

logging_collector(부울)

이 매개 변수는를 가능하게합니다.로깅 수집가, 이것은 토토 캔 메시지를 캡처하는 배경 프로세스입니다.Stderr토토 캔 파일로 리디렉션합니다. 이 접근법은 종종 토토 캔인하는 것보다 더 유용합니다Syslog, 일부 유형의 메시지가 나타나지 않을 수 있으므로Syslog출력. (일반적인 예제는 동적 링커 실패 메시지입니다. 다른 하나는와 같은 스크립트에 의해 생성 된 오류 메시지입니다.archive_command.)이 매개 변수는 서버 시작시에만 설정할 수 있습니다.

참고

토토 캔인 할 수 있습니다16999_17007로깅 수집기를 사용하지 않고; 토토 캔 메시지는 서버가 어디에 있든로 이동합니다.Stderr지시되었습니다. 그러나이 방법은 토토 캔 파일을 회전시키는 편리한 방법을 제공하지 않기 때문에 낮은 토토 캔 볼륨에만 적합합니다. 또한 로깅 수집기를 사용하지 않는 일부 플랫폼에서는 동일한 토토 캔 파일에 동시에 쓰는 여러 프로세스가 서로의 출력을 덮어 쓸 수 있기 때문에 토토 캔 컬렉터가 손실되거나 변형 될 수 있습니다..

Note

로깅 수집기는 메시지를 잃지 않도록 설계되었습니다. 즉,로드가 매우 높은 경우 컬렉터가 뒤처 졌을 때 추가 토토 캔 메시지를 보내려고하는 동안 서버 프로세스가 차단 될 수 있습니다. 대조적으로,Syslog메시지를 작성할 수없는 경우 메시지를 삭제하는 것을 선호합니다. 즉, 그러한 경우에 일부 메시지를 기록하지 못할 수 있지만 나머지 시스템을 차단하지는 않습니다..

log_directory(String)

언제logging_collector활성화되어 있습니다.이 매개 변수는 로그 파일이 생성 될 디렉토리를 결정합니다. 절대 경로 또는 클러스터 데이터 디렉토리와 관련하여 지정할 수 있습니다. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에. 기본값은log.

log_filename(String)

언제logging_collector가 활성화되어 있으며이 매개 변수는 생성 된 토토 캔 파일의 파일 이름을 설정합니다. 값은 A로 취급됩니다.Strftime패턴,%-escapes를 사용하여 시변 파일 이름을 지정할 수 있습니다. (시간 구역 의존성이있는 경우%-스케이프, 계산은에 의해 지정된 영역에서 이루어집니다log_timezone.) 지원되는%-escapes는 Open Group의 나열된 것과 유사합니다Strftime사양. 시스템의Strftime직접 사용되지 않으므로 플랫폼 별 (비표준) 확장이 작동하지 않습니다. 기본값은postgresql-%y-%m-%d_%h%m%s.log.

이스케이프없이 파일 이름을 지정하면 전체 디스크를 채우지 않도록 로그 회전 유틸리티를 사용해야합니다. 8.4 이전에 릴리스에서%ESCAPES가 존재했습니다,postgresql새 토토 캔 파일의 생성 시간의 시대를 추가 할 것입니다. 그러나 더 이상 그렇지 않습니다.

CSV 형식 출력이 활성화 된 경우log_destination, .CSVCSV 형식 출력의 파일 이름을 생성하기 위해 타임 스탬프 로그 파일 이름에 추가됩니다. (만약에log_filename.LOG, 접미사가 대신 교체됩니다.)

JSON- 형식 출력이 활성화 된 경우log_destination, .jsonJSON- 형식 출력의 파일 이름을 생성하기 위해 타임 스탬프 로그 파일 이름에 추가됩니다. (만약에log_filename종료.LOG, 접미사가 대신 교체됩니다.)

이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

log_file_mode(Integer)

UNIX 시스템 에서이 매개 변수는 토토 캔 파일에 대한 권한을 설정합니다.logging_collector가 활성화되었습니다. (Microsoft Windows 에서이 매개 변수는 무시됩니다.) 매개 변수 값은에 의해 허용되는 형식으로 지정된 숫자 모드 일 것으로 예상됩니다.CHMODUmask시스템 호출. (관례 옥탈 형식을 사용하려면 숫자는 a로 시작해야합니다.0(0).)

기본 권한은입니다.0600, 즉 서버 소유자 만 토토 캔 파일을 읽거나 쓸 수 있음을 의미합니다. 다른 일반적으로 유용한 설정은입니다.0640, 소유자 그룹의 구성원이 파일을 읽을 수 있도록합니다. 그러나 그러한 설정을 사용하려면 변경해야합니다log_directory클러스터 데이터 디렉토리 외부의 어딘가에 파일을 저장합니다. 어쨌든 민감한 데이터를 포함 할 수 있으므로 토토 캔 파일을 세계적으로 읽을 수있는 것은 현명하지 않습니다.

이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

log_rotation_age(Integer)

언제logging_collector가 활성화되어 있습니다.이 매개 변수는 개별 로그 파일을 사용하는 최대 시간을 결정한 후 새 로그 파일이 생성됩니다. 이 값이 단위없이 지정되면 몇 분이 걸립니다. 기본값은 24 시간입니다. 새로운 로그 파일의 시간 기반 생성을 비활성화하려면 0으로 설정하십시오. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

log_rotation_size(정수)

언제logging_collector활성화되어 있으며이 매개 변수는 개별 로그 파일의 최대 크기를 결정합니다. 이 양의 데이터가 로그 파일로 방출되면 새 로그 파일이 생성됩니다. 이 값이 단위없이 지정되면 킬로 바이트로 간주됩니다. 기본값은 10 메가 바이트입니다. 새 로그 파일의 크기 기반 생성을 비활성화하기 위해 0으로 설정하십시오. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

log_truncate_on_rotation(부울)

언제logging_collector활성화되어 있습니다.이 매개 변수는 원인이됩니다PostgreSQL동일한 이름의 기존 로그 파일에 부여하기보다는 자르기 (오버 라이팅). 그러나 서버 스타트 업 또는 크기 기반 회전 중에 시간 기반 회전으로 인해 새 파일이 열릴 때만 자리가 발생합니다. 꺼지면 기존 파일이 모든 경우에 추가됩니다. 예를 들어,이 설정을 A와 함께 사용합니다.log_filenameLikePostgresql-%H.log|는 24 시간당 로그 파일을 생성 한 다음 주기적으로 덮어 쓰게됩니다. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

예 : 7 일의 토토 캔를 유지하려면 하루에 하나의 토토 캔 파일이 명명되었습니다server_log.mon, server_log.tue등, 이번 주 토토 캔로 지난주 토토 캔를 자동으로 덮어 씁니다.log_filenametoServer_Log.%a, log_truncate_on_rotationtoonlog_rotation_ageto1440.

예 : 24 시간의 토토 캔를 유지하려면 시간당 1 개의 토토 캔 파일을 보관하지만 토토 캔 파일 크기가 1GB를 초과하면 더 빨리 회전합니다.log_filenametoServer_Log.%H%m, log_truncate_on_rotationtoon, log_rotation_ageto60log_rotation_sizeto1000000. 포함%minlog_filename시간의 초기 파일 이름과 다른 파일 이름을 선택하기 위해 발생할 수있는 모든 크기 구동 회전이 가능합니다.

syslog_facility(enum)

토토 캔인 할 때Syslog활성화 되어이 매개 변수가를 결정합니다.Syslog 시설사용하려면. 선택할 수 있습니다local0, local1, local2, local3, local4, local5, local6, Local7; 기본값은local0. 시스템 문서도 참조 참조Syslog데몬. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

syslog_ident(String)

토토 캔인 할 때Syslog활성화되어 있습니다.이 매개 변수는 식별하는 데 사용되는 프토토 캔램 이름을 결정합니다PostgreSQL메시지Syslog토토 캔. 기본값은Postgres. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

SYSLOG_SEVERENCE_NUMBERS(부울)

토토 캔인 할 때Syslog그리고 이것은 켜져 있습니다 (기본값). 그러면 각 메시지가 증가하는 시퀀스 번호 (예 :에 의해 접두사로 표시됩니다.[2]). 이것은를 우회합니다--- 마지막 메시지 반복 n 번 ---기본적으로 많은 Syslog 구현이 수행되는 억제. 보다 최신 Syslog 구현에서 반복 메시지 억제를 구성 할 수 있습니다 (예 :$ repeatedMsgreductioninrsyslog), 이것이 필요하지 않을 수 있습니다. 또한 실제로 반복 된 메시지를 억제하려면이 꺼질 수 있습니다.

이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

syslog_split_messages(부울)

토토 캔인 할 때Syslog활성화되어 있습니다.이 매개 변수는 메시지가 Syslog로 전달되는 방법을 결정합니다. (기본값)시 (기본값) 메시지가 줄별로 분할되고 긴 줄이 분할되어 1024 바이트에 맞도록 전통적인 Syslog 구현의 일반적인 크기 제한입니다. 꺼짐에 따라 PostgreSQL 서버 로그 메시지가 그대로 Syslog 서비스로 전달되며 잠재적으로 부피가 큰 메시지에 대처하는 것은 Syslog 서비스에 달려 있습니다..

Syslog가 궁극적으로 텍스트 파일에 로그인하는 경우, 효과는 어느 쪽이든 동일하며, 대부분의 Syslog 구현이 큰 메시지를 처리 할 수 없거나 처리하도록 특별히 구성해야하기 때문에 설정을 떠나는 것이 가장 좋습니다. 그러나 Syslog가 궁극적으로 다른 매체에 글을 쓰고 있다면 메시지를 논리적으로 함께 유지하는 것이 필요하거나 더 유용 할 수 있습니다.

이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

Event_Source(String)

토토 캔인 할 때이벤트 토토 캔활성화되어 있습니다.이 매개 변수는 식별하는 데 사용되는 프토토 캔램 이름을 결정합니다PostgreSQL로그의 메시지. 기본값은PostgreSQL. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

20.8.2. 로그인시기

log_min_messages(enum)

컨트롤메시지 레벨서버 토토 캔에 기록됩니다. 유효한 값은Debug5, Debug4, Debug3, Debug2, Debug1, Info, 통지, 경고, 오류, log, 치명적panic. 각 레벨에는이를 따르는 모든 레벨이 포함됩니다. 레벨이 나중에 더 적은 메시지가 로그로 전송됩니다. 기본값은경고. 참고log여기와 다른 순위가 있습니다client_min_messages. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

log_min_error_statement(enum)

제어 서버 로그에 오류 조건을 유발하는 SQL 문이 기록됩니다. 현재 SQL 문은 지정된 메시지의 모든 메시지에 대해 로그 항목에 포함됩니다심각도이상. 유효한 값은Debug5, Debug4, Debug3, Debug2, Debug1, 정보, 통지, 경고, 오류, log, 치명적panic. 기본값은오류, 이는 오류, 로그 메시지, 치명적인 오류 또는 공황을 일으키는 진술이 기록됩니다. 실패한 명령문의 로깅을 효과적으로 끄려면이 매개 변수를로 설정하십시오.panic. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

log_min_duration_statement(정수)

명령문이 최소한 지정된 시간 동안 실행되면 각 완료된 명령문의 지속 시간이 기록됩니다. 예를 들어,로 설정하면250ms그러면 250ms 이상 실행되는 모든 SQL 문은 기록됩니다. 이 매개 변수를 활성화하면 응용 프로그램에서 최적화되지 않은 쿼리를 추적하는 데 도움이 될 수 있습니다. 이 값이 단위없이 지정되면 밀리 초로 간주됩니다. 이것을 제로 인쇄물로 설정하면 모든 진술 기간-1(기본값)는 로깅 명령문 기간을 비활성화합니다. 적절한 수퍼 유행자 및 사용자 만SET권한 이이 설정을 변경할 수 있습니다.

이것은 재정의log_min_duration_sample,이 설정을 초과하는 쿼리는 샘플링이 적용되지 않으며 항상 기록됩니다.

확장 쿼리 프로토콜을 사용하는 클라이언트, 구문 분석 기간, 바인딩 및 실행 단계를 독립적으로 기록합니다.

Note

이 옵션을 함께 사용할 때log_statementlog_statement지속 시간 로그 메시지에서 반복되지 않습니다. 사용하지 않는 경우Syslog, PID 또는 세션 ID를 사용하여를 기록하는 것이 좋습니다.log_line_prefix프로세스 ID 또는 세션 ID를 사용하여 명령문 메시지를 이후의 기간 메시지에 연결할 수 있도록

log_min_duration_sample(정수)

최소한 지정된 시간 동안 실행 된 완료된 문의 지속 시간을 샘플링 할 수 있습니다. 이것은와 동일한 종류의 토토 캔 항목을 생성합니다.log_min_duration_statement, 그러나 실행 된 문의 하위 집합에 대해서만 샘플 속도를 제어하여log_statement_sample_rate. 예를 들어,로 설정하면100ms그러면 100ms 이상 실행되는 모든 SQL 문은 샘플링을 위해 고려됩니다. 트래픽이 너무 높아서 모든 쿼리를 기록 할 때이 매개 변수를 활성화하면 도움이 될 수 있습니다. 이 값이 단위없이 지정되면 밀리 초로 간주됩니다. 이것을 제로 샘플로 설정하면 모든 명령문 기간-1(기본값)는 샘플링 명령문 기간을 비활성화합니다. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

이 설정은보다 우선 순위가 낮습니다.log_min_duration_statementlog_min_duration_statement| 샘플링이 적용되지 않으며 항상 기록됩니다.

다른 노트log_min_duration_statement이 설정에도 적용됩니다.

log_statement_sample_rate(플로팅 포인트)

지속 시간을 초과하는 문의 비율을 결정합니다log_min_duration_sample토토 캔인합니다. 예를 들어 샘플링은 확률 론적입니다0.5주어진 진술이 기록 될 것이라는 두 가지에 통계적으로 하나의 기회가 있음을 의미합니다. 기본값은1.0, 모든 샘플링 된 명령문을 기록하는 것을 의미합니다. 이것을 설정과 동일한 샘플링 된 명령문 기간 로깅을 비활성화합니다log_min_duration_sampleto-1. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

log_transaction_sample_rate(플로팅 포인트)

다른 이유로 기록 된 진술 외에도 진술이 모두 기록 된 트랜잭션의 일부를 설정합니다. 진술의 지속 시간에 관계없이 각 새로운 거래에 적용됩니다. 예를 들어 샘플링은 확률 론적입니다0.1주어진 트랜잭션이 기록 될 10 개에 통계적으로 한 번의 기회가 있음을 의미합니다.log_transaction_sample_rate거래 샘플을 구성하는 데 도움이 될 수 있습니다. 기본값은0, 추가 거래에서 명세서를 기록하지 않음을 의미합니다. 이것을 설정1모든 트랜잭션의 모든 진술을 기록합니다. 적절한 수퍼 유행자 및 사용자 만set권한은이 설정을 변경할 수 있습니다.

note

모든 문장 옵션과 마찬가지로이 옵션은 상당한 오버 헤드를 추가 할 수 있습니다.

log_startup_progress_interval(정수)

시작 프로세스가 계속 진행중인 장기 실행 작업에 대한 메시지와 해당 작업의 추가 진행 메시지 간의 간격을 기록한 후 시간을 설정합니다. 기본값은 10 초입니다. 설정0기능을 비활성화합니다. 이 값이 단위없이 지정되면 밀리 초로 간주됩니다. 이 설정은 각 작업에 별도로 적용됩니다. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

예를 들어, 데이터 디렉토리를 동기화하는 데 25 초가 걸리고 그 이후에 25 초가 소요되는 경우, 무제한 관계를 재설정하는 데 8 초가 걸리고이 설정이 기본값이 10 초인 경우 10 초 동안 데이터 디렉토리를 동기화하기위한 메시지는 20 초 동안 진행된 후에는 다시 로그인되지 않습니다.

표 20.2PostgreSQL. 로깅 출력이 전송되는 경우Syslog또는 Windows 'EventLog, 심각도 레벨은 표에 표시된대로 번역됩니다.

표 20.2. 메시지 심각도 수준

심각도 usage Syslog EventLog
Debug1 .. Debug5 개발자가 사용할 수 있도록 연속적으로 더 많은 정보를 제공합니다. 디버그 정보
info 사용자가 암시 적으로 요청한 정보를 제공합니다 (예 : 출력진공 장점. 정보 정보
통지 사용자에게 도움이 될 수있는 정보 (예 : 긴 식별자의 잘린 통지)를 제공합니다. 통지 정보
경고 가능한 문제에 대한 경고를 제공합니다 (예 :커밋트랜잭션 블록 외부. 통지 경고
오류 현재 명령이 중단 된 오류를보고합니다. 경고 오류
log 관리자에게 관심있는 정보를보고, 예를 들어 체크 포인트 활동. 정보 정보
치명적 현재 세션이 중단 된 오류를보고합니다. err 오류
panic 모든 데이터베이스 세션이 중단 된 오류를보고합니다. Crit 오류

20.8.3. 로그인

Note

토토 캔로 선택한 내용은 보안에 영향을 줄 수 있습니다. 보다PostgreSQL : 문서 : 15 : 25.3. 롤 토토 파일 유지 관리.

application_name(String)

theApplication_Name|지명 된 ATALEN문자 (표준 빌드의 64 자). 일반적으로 서버에 연결시 응용 프토토 캔램에 의해 설정됩니다. 이름은에 표시됩니다.pg_stat_activityCSV 로그 항목에 포함되어 있습니다. 또한를 통해 정기 로그 항목에 포함될 수 있습니다.log_line_prefix매개 변수. 인쇄 가능한 ASCII 문자 만 사용될 수 있습니다.Application_Name값. 다른 문자는 물음표로 대체됩니다 (?).

debug_print_parse(부울)
debug_print_rewritten(부울)
debug_print_plan(부울)

이 매개 변수를 사용하면 다양한 디버깅 출력이 방출 될 수 있습니다. 설정되면 결과 구문 분석 트리, 쿼리 리 작품 출력 또는 실행 된 각 쿼리에 대한 실행 계획을 인쇄합니다. 이 메시지는에서 방출됩니다.log메시지 레벨이므로 기본적으로 서버 로그에 나타나지 만 클라이언트로 전송되지 않습니다. 조정하여 변경할 수 있습니다client_min_messages및/또는log_min_messages. 이 매개 변수는 기본적으로 꺼져 있습니다.

debug_pretty_print(부울)

SET SET,debug_pretty_print생성 된 메시지를 들여 쓰기debug_print_parse, debug_print_rewritten또는debug_print_plan. 이로 인해 더 읽기 쉽지만 출력이 훨씬 길어compact꺼져있을 때 사용되는 형식. 기본적으로 켜져 있습니다.

log_autovacuum_min_duration(정수)

최소한 지정된 시간 동안 실행되면 Autovacuum에 의해 실행 된 각 조치를 기록합니다. 이것을 0 로그로 설정하면 모든 Autovacuum 동작.-1autovacuum 동작을 기록합니다. 이 값이 단위없이 지정되면 밀리 초로 간주됩니다. 예를 들어, 이것을 설정하면250ms그러면 250ms 이상 실행되는 모든 자동 진공 및 분석이 기록됩니다. 또한이 매개 변수가 이외의 값으로 설정된 경우-1, 상충되는 잠금 장치 또는 동시에 삭제 된 관계로 인해 Autovacuum 조치가 건너 뛸 경우 메시지가 기록됩니다. 기본값은10min. 이 매개 변수를 활성화하는 것은 오토바 쿠움 활동을 추적하는 데 도움이 될 수 있습니다. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄; 그러나 테이블 스토리지 매개 변수를 변경하여 개별 테이블에 대해 설정을 무시할 수 있습니다.

log_checkpoints(부울)

서버 로그에 검사 점과 재시작이 로그인됩니다. 작성된 버퍼 수와 쓰기 시간을 포함하여 일부 통계는 로그 메시지에 포함됩니다. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에. 기본값이 켜져 있습니다.

log_connections(부울)

각각의 시도 된 연결이 서버에 대한 연결을 기록 할뿐만 아니라 클라이언트 인증 (필요한 경우) 및 인증을 성공적으로 완료합니다. 적절한 수퍼 유행자 및 사용자 만SET권한은 세션 시작 시이 매개 변수를 변경할 수 있으며 세션 내에서 전혀 변경할 수 없습니다. 기본값은OFF.

note

일부 클라이언트 프토토 캔램, 유사PSQL, 비밀번호가 필요한지 결정하는 동안 두 번 연결하려고 시도하므로 중복연결 수신메시지가 반드시 문제를 나타내는 것은 아닙니다.

log_disconnections(부울)

세션 종료를 기록합니다. 로그 출력은와 유사한 정보를 제공합니다.log_connections와 세션 기간. 적절한 수퍼 유행자 및 사용자 만SET권한은 세션 시작 시이 매개 변수를 변경할 수 있으며 세션 내에서 전혀 변경할 수 없습니다. 기본값은OFF.

log_duration(부울)

완성 된 모든 문의 지속 시간이 기록됩니다. 기본값은OFF. 적절한 수퍼 유행자 및 사용자 만SET권한 이이 설정을 변경할 수 있습니다.

확장 쿼리 프로토콜을 사용하는 클라이언트의 경우 구문 분석 기간, 바인딩 및 실행 단계가 독립적으로 기록됩니다.

Note

활성화의 차이log_duration및 설정log_min_duration_statement~ 0은 초과하는 것입니다log_min_duration_statement쿼리 텍스트가 기록되도록 강요하지만이 옵션은 그렇지 않습니다. 따라서 iflog_durationisonandlog_min_duration_statement양수 값이 있고 모든 지속 시간이 기록되지만 쿼리 텍스트는 임계 값을 초과하는 문에 대해서만 포함됩니다. 이 동작은 고 부하 설치에서 통계를 수집하는 데 유용 할 수 있습니다.

log_error_verbosity(enum)

로그인 된 각 메시지에 대해 서버 로그에 작성된 세부 사항을 제어합니다. 유효한 값은Terse, 기본값Verbose, 각각 표시된 메시지에 더 많은 필드를 추가합니다.Terse의 벌목 제외세부 사항, 힌트, 쿼리Context오류 정보.Verbose출력 포함sqlstate오류 코드 (참조스포츠 토토 결과 : 문서 : 15 : 부록 A. 스포츠 토토 결과 스포츠 토토 결과 코드) 및 오류를 생성 한 소스 코드 파일 이름, 함수 이름 및 줄 번호. 적절한 수퍼 유행자 및 사용자 만set권한 이이 설정을 변경할 수 있습니다.

log_hostname(부울)

기본적으로 연결 로그 메시지는 연결 호스트의 IP 주소 만 표시합니다. 이 매개 변수를 켜면 호스트 이름의 로깅도 원인입니다. 호스트 이름 해상도 설정에 따라 무시할 수없는 성능 페널티를 부과 할 수 있습니다. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

log_line_prefix(String)

이것은 Aprintf-각 토토 캔 라인의 시작 부분에서 출력되는 스타일 문자열.%문자 시작탈출 시퀀스아래에 요약 된 상태 정보로 대체됩니다. 인식되지 않은 탈출은 무시됩니다. 다른 문자는 로그 라인에 직접 복사됩니다. 일부 이스케이프는 세션 프로세스에 의해서만 인식되며 기본 서버 프로세스와 같은 백그라운드 프로세스에 의해 비어있는 것으로 취급됩니다. 상태 정보는 % 후 및 옵션 전 및 옵션 이전의 숫자 문자를 지정하여 왼쪽 또는 오른쪽으로 정렬 될 수 있습니다. 음수 값은 공백으로 오른쪽에 상태 정보가 패딩되어 최소 너비를 제공하는 반면, 양수 값은 왼쪽에 패드됩니다. 패딩은 로그 파일의 인간 가독성을 돕는 데 유용 할 수 있습니다.

이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에. 기본값은'%m [%p]'타임 스탬프와 프로세스 ID를 기록하는 것은

탈출 효과 세션 만
%a 응용 프토토 캔램 이름
%U 사용자 이름
%d 데이터베이스 이름
%r 원격 호스트 이름 또는 IP 주소 및 원격 포트
%H 원격 호스트 이름 또는 IP 주소
%B 백엔드 유형 아니오
%P 프로세스 ID 아니오
%P 병렬 그룹 리더의 프로세스 ID,이 프로세스가 병렬 쿼리 작업자 인 경우 아니오
%t 밀리 초없는 타임 스탬프 아니오
%m 밀리 초가있는 타임 스탬프 아니오
%n 밀리 초가있는 타임 스탬프 (UNIX 에포크로) 아니오
%I 명령 태그 : 세션 유형의 현재 명령
%e SQLSTATE 오류 코드 아니오
%C 세션 ID : 아래 참조 아니오
%l 각 세션 또는 프로세스에 대한 로그 라인 수, 1 아니오
%s 프로세스 시작 시간 스탬프 아니오
%V 가상 트랜잭션 ID (backendid/localXID) 아니오
%x 트랜잭션 ID (0 할당되지 않은 경우 0) 아니요
%Q 출력은 없지만,이 시점에서 문자열에서 중지하지 말라고 말합니다. 세션 프로세스로 무시 아니오
%Q 현재 쿼리의 쿼리 식별자. 쿼리 식별자는 기본적으로 계산되지 않으므로이 필드는 0이면 0compute_query_id매개 변수가 활성화되어 있거나 쿼리 식별자를 계산하는 타사 모듈이 구성됩니다.
%% 리터럴% 아니오

백엔드 유형은 열에 해당합니다backend_type보기에서pg_stat_activity이지만 해당보기에는 표시되지 않는 토토 캔에 추가 유형이 나타날 수 있습니다.

the%CEscape는 두 개의 4 바이트 16 진수 숫자 (선행 0이없는)로 구성된 준 유니 퀴크 세션 식별자를 인쇄합니다. 숫자는 프로세스 시작 시간과 프로세스 ID이므로%C해당 항목을 인쇄하는 공간 절약 방법으로도 사용할 수도 있습니다. 예를 들어, 세션 식별자를 생성하려면pg_stat_activity,이 쿼리를 사용하십시오 :

select to_hex (trunc (extract (exoch from backend_start)) :: 정수) || '.' ||
       to_hex (pid)
pg_stat_activity에서;

remempty 값을 설정 한 경우log_line_prefix, 당신은 일반적으로 마지막 캐릭터를 공간으로 만들어야합니다. 구두점 문자도 사용할 수 있습니다.

Syslog자체 타임 스탬프 및 프로세스 ID 정보를 생성하므로 로깅하는 경우 이스케이프를 포함시키고 싶지 않을 것입니다.Syslog.

the%QEscape는 사용자 또는 데이터베이스 이름과 같은 세션 (백엔드) 컨텍스트에만 사용할 수있는 정보를 포함 할 때 유용합니다. 예를 들어:

log_line_prefix = '%m [%p]%q%u@%d/%a'

Note

the%QEscape는 항상 라인 출력에 대한 제로 식별자를보고합니다.log_statement왜냐하면log_statement식별자를 계산할 수없는 잘못된 문을 포함하여 식별자를 계산하기 전에 출력을 생성합니다.

log_lock_waits(부울)

세션이 더 오래 기다릴 때 로그 메시지가 생성되는지Deadlock_timeout자물쇠를 얻으려면. 이것은 잠금 대기가 성능 저하를 유발하는지 여부를 결정하는 데 유용합니다. 기본값은OFF. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

log_recovery_conflict_waits(부울)

시작 프로세스가 더 길어질 때 로그 메시지가 생성되는지 여부를 제어합니다Deadlock_timeout복구 충돌. 이것은 복구 충돌로 인해 복구가 Wal을 적용하는 것을 막는지를 결정하는 데 유용합니다.

기본값은OFF. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

log_parameter_max_length(Integer)

0보다 크면 비 방향 명령문-로깅 메시지로 기록 된 각 바인드 매개 변수 값 이이 많은 바이트에 트림됩니다. 제로는 비 에어러 명령문에 대한 바인드 매개 변수의 로깅을 비활성화합니다.-1(기본값)는 바인드 매개 변수를 전체 토토 캔인 할 수 있습니다. 이 값이 단위없이 지정되면 바이트로 사용됩니다. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

이 설정은의 결과로 인쇄 된 로그 메시지에만 영향을 미칩니다.log_statement, log_duration및 관련 설정. 이 설정의 0이 아닌 값이 오버 헤드를 추가하십시오. 특히 파라미터가 이진 형식으로 전송되는 경우 텍스트로 변환이 필요합니다.

log_parameter_max_length_on_error(정수)

0보다 크면 오류 메시지에보고 된 각 바인드 매개 변수 값 이이 많은 바이트로 트리밍됩니다. 0 (기본값) 오류 메시지에 바인드 매개 변수를 포함하여 비활성화됩니다.-1결합 매개 변수를 전체적으로 인쇄 할 수 있습니다. 이 값이 단위없이 지정되면 바이트로 간주됩니다.

이 설정의 0이 아닌 값 오버 헤드 추가PostgreSQL오류가 발생하는지 여부에 관계없이 각 문의 시작시 메모리에 매개 변수 값의 텍스트 표현을 저장해야합니다. 바인드 매개 변수가 텍스트로 전송 될 때보 다 바인드 파라미터가 이진 형태로 전송 될 때 오버 헤드는 더 큽니다. 전자의 경우는 데이터 변환이 필요하고 후자는 문자열을 복사하면됩니다..

log_statement(enum)

통제 어떤 SQL 문을 기록합니다. 유효한 값은없음(OFF),DDL, modall(모든 진술).DDL와 같은 모든 데이터 정의 문장을 기록합니다.Create, Alter드롭진술.mod모든 토토 캔DDL진술,69214_69222, 업데이트, 삭제, Truncate복사. 준비, execute분석포함 된 명령이 적절한 유형 인 경우 명령문도 기록됩니다. 확장 쿼리 프로토콜을 사용하는 클라이언트의 경우 로깅이 실행 메시지를 수신 할 때 발생하며 바인드 매개 변수의 값이 포함됩니다 (임베드 된 단일 쿼트 마크가 두 배로 늘어 됨)..

기본값은없음. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

Note

간단한 구문 오류가 포함 된 문장은에 의해서도 기록되지 않습니다log_statement=all설정, 로그 메시지는 기본 구문 분석이 수행 된 후에 만 명령문 유형을 결정하기 위해 방출되기 때문에 설정. 확장 쿼리 프로토콜의 경우,이 설정은 마찬가지로 실행 단계 전에 실패하는 문을 기록하지 않습니다 (즉, 구문 분석 또는 계획 중). 세트log_min_error_statementto오류(또는 하단) 그러한 진술을 기록합니다.

토토 캔인 한 명령문에는 민감한 데이터가 표시 될 수 있으며 일반 텍스트 비밀번호를 포함 할 수도 있습니다.

log_replication_commands(부울)

각 복제 명령이 서버 토토 캔에 토토 캔인됩니다. 보다PostgreSQL : 문서 : 15 : 55.4. 사설 토토 사이트 복제 프로토콜복제 명령에 대한 자세한 내용. 기본값은입니다.OFF. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

log_temp_files(Integer)

임시 파일 이름 및 크기의 로깅을 제어합니다. 정렬, 해시 및 임시 쿼리 결과에 대해 임시 파일을 작성할 수 있습니다. 이 설정에서 활성화 된 경우 삭제 될 때 각 임시 파일에 대해 로그 항목이 방출됩니다. 0의 값은 모든 임시 파일 정보를 로그인 반면, 긍정적 값은 크기가 지정된 데이터 양보다 큰 파일 만 기록합니다. 이 값이 단위없이 지정되면 킬로 바이트로 간주됩니다. 기본 설정은 -1로 이러한 로깅을 비활성화합니다. 적절한 수퍼 유행자 및 사용자 만SET권한은이 설정을 변경할 수 있습니다.

log_timezone(String)

서버 토토 캔에 작성된 타임 스탬프에 사용되는 시간대를 설정합니다. 같지 않은TimeZone,이 값은 클러스터 전체에 있으므로 모든 세션이 일관되게 타임 스탬프를보고합니다. 내장 기본값은입니다.gmt, 그러나 일반적으로postgresql.conf;initdb시스템 환경에 해당하는 설정을 설치합니다. 보다섹션 8.5.3자세한 내용은. 이 매개 변수는에서만 설정할 수 있습니다.postgresql.conf파일 또는 서버 명령 줄에.

20.8.4. CSV 형식 로그 출력 사용

포함CSVLOGinlog_destinationList는 로그 파일을 데이터베이스 테이블로 가져 오는 편리한 방법을 제공합니다. 이 옵션은 Comma-Separated-values (의 로그 라인을 방출합니다.CSV) 형식,이 열과 함께 : 밀리 초, 사용자 이름, 데이터베이스 이름, 프로세스 ID, 클라이언트 호스트 : 포트 번호, 세션 ID, 세션 당 선 번호, 명령 태그, 세션 시작 시간, 가상 트랜잭션 ID, 일반 트랜잭션 ID, 오류 심각도, 오류 메시지, 오류 메시지, 힌트가 오류가 발생한 내부 query (오류) 오류 컨텍스트, 오류로 이어진 사용자 쿼리 (에 오류가 발생한 사용자 쿼리log_min_error_statement), 그 안에 오류 위치의 문자 수, postgresql 소스 코드의 오류 위치 (iflog_error_verbosity로 설정되었습니다Verbose), 응용 프토토 캔램 이름, 백엔드 유형, 병렬 그룹 리더의 프로세스 ID 및 쿼리 ID. 다음은 CSV 형식 로그 출력 저장을위한 샘플 테이블 정의입니다.

Postgres_Log 테이블 작성
(
  시간대가있는 log_time timestamp (3),
  user_name 텍스트,
  database_name 텍스트,
  process_id 정수,
  Connection_from 텍스트,
  session_id 텍스트,
  session_line_num bigint,
  Command_tag 텍스트,
  시간대가있는 session_start_time 타임 스탬프,
  virtual_transaction_id 텍스트,
  transaction_id bigint,
  error_severity 텍스트,
  sql_state_code 텍스트,
  메시지 텍스트,
  세부 텍스트,
  힌트 텍스트,
  내부_Query 텍스트,
  internal_query_pos 정수,
  컨텍스트 텍스트,
  쿼리 텍스트,
  query_pos 정수,
  위치 텍스트,
  application_name 텍스트,
  backend_type 텍스트,
  leader_pid 정수,
  query_id bigint,
  기본 키 (session_id, session_line_num)
);

이 테이블에 토토 캔 파일을 가져 오려면 사용하십시오.복사명령 :

csv를 사용하여 '/full/path/to/logfile.csv'에서 postgres_log 복사;

제공된 것을 사용하여 파일에 외부 테이블로 파일에 액세스 할 수도 있습니다file_fdw모듈.

CSV 로그 파일 가져 오기를 단순화하기 위해해야 할 일이 몇 가지 있습니다 :

  1. SETlog_filenameandlog_rotation_age로그 파일에 일관되고 예측 가능한 이름 지정 체계를 제공합니다. 이를 통해 파일 이름이 무엇인지 예측하고 개별 로그 파일이 완료되어 가져올 준비가 된시기를 알 수 있습니다.

  2. SETlog_rotation_size토토 캔 파일 이름을 예측하기 어렵게 만들기 때문에 크기 기반 토토 캔 회전을 비활성화하려면 0 ~ 0입니다.

  3. SETlog_truncate_on_rotationtoon따라서 이전 토토 캔 데이터가 같은 파일의 새 새와 혼합되지 않도록하십시오.

  4. 위의 표 정의에는 기본 키 사양이 포함됩니다. 이것은 실수로 동일한 정보를 두 번 가져 오지 않도록 보호하는 데 유용합니다. 그만큼COPY명령은 한 번에 가져 오는 모든 데이터를 한 번에 저장하므로 오류로 인해 전체 가져 오기가 실패하게됩니다. 부분 로그 파일을 가져오고 나중에 파일이 완료되면 파일을 다시 가져 오면 기본 키 위반으로 인해 가져 오기가 실패합니다. 가져 오기 전에 로그가 완료되고 닫힐 때까지 기다리십시오. 이 절차는 또한 완전히 작성되지 않은 부분 선을 실수로 가져 오는 것을 방지 할 수 있습니다.COPY실패합니다.

20.8.5. JSON- 형식 로그 출력 사용

포함JSONLOGinlog_destination목록은 로그 파일을 여러 다른 프로그램으로 가져 오는 편리한 방법을 제공합니다. 이 옵션은 로그 라인을 방출합니다JSON형식.

NULL 값을 가진 문자열 필드는 출력에서 제외됩니다. 향후 추가 필드가 추가 될 수 있습니다. 프로세스하는 사용자 애플리케이션JSONLOG출력은 알 수없는 필드를 무시해야합니다.

각 로그 라인은 키 세트와 관련 값이있는 JSON 객체로 직렬화됩니다.표 20.3.

표 20.3. JSON 로그 항목의 키 및 값

키 이름 타입 설명
타임 스탬프 String 밀리 초가있는 타임 스탬프
사용자 String 사용자 이름
dbname String 데이터베이스 이름
PID 번호 프로세스 ID
Remote_host String 클라이언트 호스트
Remote_port 번호 클라이언트 포트
session_id String 세션 ID
line_num 번호 세션 당 줄 번호
PS String 현재 PS 디스플레이
session_start String 세션 시작 시간
VXID String 가상 트랜잭션 ID
TXID String 정규 거래 ID
ERROR_SEVERITY String 오류 심각도
state_code String sqlstate code
메시지 String 오류 메시지
세부 사항 String 오류 메시지 세부 사항
힌트 String 오류 메시지 힌트
내부_Query String 오류로 이어진 내부 쿼리
내부 _position 번호 커서 인덱스 내부 쿼리
Context String 오류 컨텍스트
성명서 String 클라이언트 지원 쿼리 문자열
cursor_position 번호 쿼리 문자열에 커서 색인
func_name String 오류 위치 함수 이름
file_name String 오류 위치의 파일 이름
file_line_num 번호 오류 위치의 파일 줄 번호
Application_Name String 클라이언트 응용 프토토 캔램 이름
backend_type String 백엔드 유형
leader_pid 번호 활동적인 병렬 근로자를위한 리더의 프로세스 ID
query_id 번호 쿼리 ID

20.8.6. 프로세스 제목

이 설정은 서버 프로세스의 프로세스 제목을 수정하는 방법을 제어합니다. 프로세스 타이틀은 일반적으로와 같은 프토토 캔램을 사용하여 봅니다.PS또는 Windows에서프로세스 탐색기. 보다무지개 토토 PostgreSQL : 문서 : 15 : 28.1. 표준 유닉스 도구자세한 내용.

cluster_name(String)

다양한 목적 으로이 데이터베이스 클러스터 (인스턴스)를 식별하는 이름을 설정합니다. 클러스터 이름은이 클러스터의 모든 서버 프로세스의 프로세스 제목에 나타납니다. 또한 대기 연결의 기본 응용 프토토 캔램 이름입니다 (참조synchronous_standby_names).

이름은보다 작은 문자열 일 수 있습니다지명 된 ATALEN문자 (표준 빌드의 64 자). 인쇄 가능한 ASCII 문자 만 사용될 수 있습니다.cluster_name값. 다른 문자는 물음표로 대체됩니다 (?). 이 매개 변수가 빈 문자열로 설정된 경우 이름이 표시되지 않습니다''(기본값). 이 매개 변수는 서버 시작에서만 설정할 수 있습니다.

update_process_title(부울)

서버에서 새 SQL 명령을 수신 할 때마다 프로세스 제목을 업데이트 할 수 있습니다. 이 설정 기본값on대부분의 플랫폼에서는 기본적으로OFFWindows에서 해당 플랫폼의 프로세스 제목을 업데이트하기위한 더 큰 오버 헤드로 인해. 적절한 수퍼 유행자 및 사용자 만set권한은이 설정을 변경할 수 있습니다.

정정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면