postgres 내부 로그 회전 메커니즘이 특정 시간보다 오래된 로그 파일을 삭제할 수 있습니까?


9

posgtres의 내부 로그 회전 메커니즘을 사용하고 있습니다. 30 일이 지난 로그 파일을 삭제하고 싶습니다. postgres가 어떻게해야합니까? postgres가 지원하지 않는 경우 30 일이 지난 로그 만 삭제하도록 logrotate를 설정할 수 있습니까?

내 현재 설정은 다음과 같습니다

log_destination = 'stderr'             
logging_collector = on
log_directory = 'pg_log'                
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' 
#log_truncate_on_rotation = off 
log_rotation_age = 1440         
log_rotation_size = 0    

답변:


5

Postgres 로깅 메커니즘 이이 정리를 지원한다고 생각하지는 않지만 Postgres가 작성중인 활성 로그 파일을 엉망으로하지 않는 한 logrotate 또는 cron 작업을 사용하여 오래된 로그를 삭제하는 것이 안전합니다.

Postgres 로깅의 경우 일반적으로 syslog에 로깅하고 일반 로그 회전 절차가 수행되도록하는 것이 좋습니다. 여기에는 몇 가지 장점이 있지만 두 가지 큰 장점은 다른 데몬과 동일한 방식으로 표준 로그 회전 절차를 사용하고 syslog 데몬이 원격 호스트에 로그를 보내도록하는 기능입니다 언젠가하고 싶은 일입니다.

다른 옵션은 Postgres 매뉴얼 섹션 23.3에서 간략히 설명 합니다.


1

syslog를 사용하지 않는다면 cron에서 다음 스크립트를 실행하여 하루 만 호출하면됩니다.

#!/bin/sh

HOME=/var/lib/pgsql
export HOME
PGDATA=/var/lib/pgsql/9.1/data
export PGDATA

/usr/bin/find $PGDATA/pg_log -type f -ctime +30 -name "*.log" -exec /bin/rm {} \;

syslog에 로깅하지 않으면 pgAdmin 또는 pgFouine과 같은 도구를 사용하여 데이터베이스 로그를 보거나 분석 할 수 있습니다.


pgFouine이 나를이 길로 이끌었습니다. syslog 로그에서 pgFouine을 사용할 수 있지만 더 올바르게 설정하려면 더 많은 작업이 필요합니다.
Freiheit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.