[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
터미널을 입력하십시오 .
-
#log_directory = 'pg_log'
에log_directory = 'pg_log'
-
#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
에log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
-
#log_statement = 'none'
에log_statement = 'all'
-
#logging_collector = off
에logging_collector = on
-
선택 사항 :
SELECT set_config('log_statement', 'all', true);
-
sudo /etc/init.d/postgresql restart
또는sudo service postgresql restart
-
postgresql의 화재 쿼리
select 2+2
-
현재 로그인 찾기
/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';
답변
답변
위의 답변에 +1 다음 구성을 사용합니다
log_line_prefix = '%t %c %u ' # time sessionid user
log_statement = 'all'