본문으로 건너뛰기

logging_collector

버전기본값context타입
14postmaster (재시작)boolean
15postmaster (재시작)boolean
16postmaster (재시작)boolean
17postmaster (재시작)boolean
18postmaster (재시작)boolean
19postmaster (재시작)boolean

stderr로 보낸 log 메시지를 가로채 파일로 저장하는 background process인 logging collector를 켠다.

PostgreSQL의 각 서버 process는 log 메시지를 stderr로 출력한다. logging collector는 이 stderr 출력을 받아 log_directorylog_filename이 정한 log 파일로 redirect하는 전담 process다. 이 방식은 syslog로 보내는 것보다 유용한 경우가 많은데, dynamic linker 오류 메시지나 archive_command 같은 스크립트가 출력하는 에러처럼 syslog에는 잡히지 않는 메시지까지 수집되기 때문이다. 서버 시작 시에만 설정할 수 있다.

collector 없이 stderr를 그대로 파일로 흘려보낼 수도 있지만, 그 방식은 log 파일 rotation 수단이 없고 일부 플랫폼에서는 여러 process가 같은 파일에 동시에 쓰다가 출력이 섞이거나 유실될 수 있어 소량 log에만 적합하다. 또 collector는 메시지를 잃지 않도록 설계되어 있어, 극단적인 부하로 collector가 밀리면 서버 process가 log를 쓰려다 잠시 멈출 수 있다. 반대로 syslog는 쓰지 못하는 메시지를 버리는 쪽을 택하므로 일부 메시지를 잃는 대신 시스템 전체를 막지 않는다.

운영 노트: 파일 기반 log 운영의 사실상 표준 구성은 logging_collector = onlog_destination = stderr 조합이다. csvlogjsonlog destination은 collector가 켜져 있어야만 쓸 수 있다. rotation 동작은 log_rotation_age, log_rotation_size, log_truncate_on_rotation으로 함께 설계한다.

출처: PostgreSQL 18 문서