[postgresql] PostgreSQL 쿼리를 기록하는 방법?

PostgreSQL 8.3이 실행하는 모든 SQL의 로깅을 활성화하는 방법은 무엇입니까?

편집 (추가 정보)
다음 줄을 변경했습니다.

log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'

그리고 PostgreSQL 서비스를 다시 시작하십시오 …하지만 로그가 생성되지 않았습니다 … Windows Server 2003을 사용하고 있습니다.

어떤 아이디어?



답변

당신의에서 data/postgresql.conf파일의 변경 log_statement에 대한 설정을 'all'.


편집하다

새 정보를 살펴보면 확인해야 할 몇 가지 다른 설정이있을 수 있습니다.

  • log_destination변수를 켰는 지 확인하십시오
  • 당신이 켜져 있는지 확인 logging_collector
  • 또한 log_directory디렉토리가 디렉토리 내에 이미 존재 data하고 postgres 사용자 가 디렉토리에 쓸 수 있는지 확인하십시오 .

답변

를 수정 /etc/postgresql/9.3/main/postgresql.conf하고 다음과 같이 줄을 변경하십시오.

참고 : postgresql.conf파일을 찾지 못하면 $locate postgresql.conf터미널을 입력하십시오 .

  1. #log_directory = 'pg_log' log_directory = 'pg_log'

  2. #log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'

  3. #log_statement = 'none' log_statement = 'all'

  4. #logging_collector = off logging_collector = on

  5. 선택 사항 :SELECT set_config('log_statement', 'all', true);

  6. sudo /etc/init.d/postgresql restart 또는 sudo service postgresql restart

  7. postgresql의 화재 쿼리 select 2+2

  8. 현재 로그인 찾기 /var/lib/pgsql/9.2/data/pg_log/

로그 파일은 시간이 지남에 따라 많이 커져서 시스템을 죽일 수 있습니다. 안전을 위해 로그를 삭제하고 postgresql 서버를 다시 시작하는 bash 스크립트를 작성하십시오.

감사합니다 @paul, @Jarret Hardie, @ Zoltán, @Rix Beck, @Latif Premani


답변

SELECT set_config('log_statement', 'all', true);

해당 사용자 권한으로 연결 후 위의 쿼리를 사용할 수 있습니다. 세션이 끝날 때까지 로깅에 영향을줍니다.


답변

PostgreSQL에 다음 줄을 추가하고 서버를 다시 시작해야합니다.

log_directory = 'pg_log'
log_filename = 'postgresql-dateformat.log'
log_statement = 'all'
logging_collector = on


답변

참고 : 다른 솔루션은 기본 데이터베이스의 문만 기록하며 일반적으로 postgres다른 사람은 기록합니다. 그들의 해결책으로 시작하십시오. 그때:

ALTER DATABASE your_database_name
SET log_statement = 'all';

참조 : https://serverfault.com/a/376888 /log_statement


답변

설정 log_statement합니다 all:

오류보고 및 로깅-log_statement


답변

위의 답변에 +1 다음 구성을 사용합니다

log_line_prefix = '%t %c %u ' # time sessionid user
log_statement = 'all'