Postgre 기록 방법SQL 쿼리?
Postgre에서 실행되는 모든 SQL의 로깅을 활성화하는 방법SQL 8.3?
편집됨(추가 정보) 다음 행을 변경했습니다.
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'
Postgre를 다시 시작합니다.SQL 서비스...로그가 생성되지 않았습니다.Windows Server 2003을 사용하고 있습니다.
아이디어 있어요?
당신의data/postgresql.conf
파일, 파일 변경log_statement
설정'all'
.
편집
귀하의 새로운 정보를 보면 다음과 같은 몇 가지 다른 설정이 있을 수 있습니다.
- 전원을 켰는지 확인합니다.
log_destination
변수 - 반드시 전원을 켜십시오.
logging_collector
- 또한 확인하십시오.
log_directory
디렉토리가 이미 내부에 있습니다.data
포스트그레스 사용자가 작성할 수 있는 디렉토리입니다.
편집하기/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, @Zoltan, @Rix Beck, @Latif Premani에게 감사합니다.
참고: 다른 솔루션은 기본 데이터베이스의 문만 기록합니다(일반적으로).postgres
—다른 사용자를 로그에 기록하고, 해당 사용자의 솔루션으로, 다음을 수행합니다.
ALTER DATABASE your_database_name
SET log_statement = 'all';
참조: https://serverfault.com/a/376888 /
SELECT set_config('log_statement', 'all', true);
해당 사용자 권한은 연결 후 위의 쿼리를 사용할 수 있습니다.이는 세션이 종료될 때까지 로깅에 영향을 미칩니다.
또한 Postgre에서 이 행을 추가해야 합니다.SQL 및 서버 재시작:
log_directory = 'pg_log'
log_filename = 'postgresql-dateformat.log'
log_statement = 'all'
logging_collector = on
세트log_statement
로.all
:
+1에서 위의 답까지.다음 구성을 사용합니다.
log_line_prefix = '%t %c %u ' # time sessionid user
log_statement = 'all'
Postgre를 실행하는 CentOS 6.4(Red Hat 4.4.7-3)에 대한 자세한 내용을 보려면 다음과 같이 하십시오.이 웹 페이지의 지침에 따라 SQL 9.2:
- 집합(주석 없음)
log_statement = 'all'
그리고.log_min_error_statement = error
에/var/lib/pgsql/9.2/data/postgresql.conf
. - Postgre 다시 로드SQL 구성입니다.저에게, 이것은 달리는 것에 의해 이루어졌습니다.
/usr/pgsql-9.2/bin/pg_ctl reload -D /var/lib/pgsql/9.2/data/
. - 오늘의 로그인 찾기
/var/lib/pgsql/9.2/data/pg_log/
postgresql에 이에 대한 확장이 있습니다.이름은 "pg_stat_stat_stats"입니다.https://www.postgresql.org/docs/9.4/pgstatstatements.html
기본적으로 postgresql.conf 파일을 약간 변경해야 합니다.
shared_preload_libraries= 'pg_stat_statements'
pg_stat_statements.track = 'all'
그런 다음 DB에 로그인하고 다음 명령을 실행해야 합니다.
create extension pg_stat_statements;
이름이 "pg_stat_stat_stats"인 새 보기가 생성됩니다.이 보기에서는 실행된 모든 쿼리를 볼 수 있습니다.
또한 모든 문을 기록하도록 이 매개 변수를 설정해야 합니다.
log_min_duration_statement = 0
동적으로 두 가지 방법으로 로깅을 활성화/비활성화할 수 있습니다.
- DB에서 글로벌 변수를 변경하고 구성을 다시 로드합니다. a) log_statement = 'all'; 또는 log_min_session_statement = 0; b) pg_session_conf를 선택합니다.
- Linux 명령줄에서 postgres 구성 파일을 편집하고 log_min_syslog_statement = 0 log_statement = 'all' 구성 파일 su - postgres /usr/bin/pg_ctl 다시 로드
이 두 경우 모두 Postgres를 다시 시작하면 안 됩니다.구성 다시 로드를 통해 로깅을 동적으로 활성화/비활성화할 수 있습니다.
이것이 도움이 되기를 바랍니다.
한 후 를 다시 시작해야 .SQL을 통해 로깅을 지속적으로 사용할 수 있습니다.*사용하는 매개 변수ALTER SYSTEM SET
으로 설정됨postgresql.auto.conf
postgresql.conf
:
ALTER SYSTEM SET log_statement = 'all';
그리고 아래 쿼리 중 하나를 실행한 후 Postgre를 다시 시작해야 합니다.로깅을 지속적으로 사용하지 않도록 설정하는 SQL:
ALTER SYSTEM RESET log_statement;
또는:
ALTER SYSTEM SET log_statement = 'none';
아래 쿼리를 실행한 후 Postgre를 다시 시작해야 합니다.로깅을 지속적으로 사용하도록 설정하는 SQL:
ALTER SYSTEM SET log_min_duration_statement = 0;
또한 아래 쿼리 중 하나를 실행한 후 Postgre를 다시 시작해야 합니다.로깅을 지속적으로 사용하지 않도록 설정하는 SQL:
ALTER SYSTEM RESET log_min_duration_statement;
또는:
ALTER SYSTEM SET log_min_duration_statement = -1;
아래 쿼리는 로깅을 지속적으로 사용하거나 사용하지 않도록 설정할 수 없습니다.
SET SESSION log_statement = 'all'
SET log_statement = 'all'
SET LOCAL log_statement = 'all'
SET SESSION log_min_duration_statement = 0;
SET log_min_duration_statement = 0;
SET LOCAL log_min_duration_statement = 0;
또는:
RESET log_statement;
SET SESSION log_statement = 'none'
SET log_statement = 'none'
SET LOCAL log_statement = 'none'
RESET log_min_duration_statement;
SET SESSION log_min_duration_statement = -1;
SET log_min_duration_statement = -1;
SET LOCAL log_min_duration_statement = -1;
나는 그것을 설정하려고 노력했습니다.log_statement
일부 postgres 구성 파일에서 파일을 읽었지만 실제로는 우리 postgres에서 읽지 않았습니다.
요청을 사용하여 확인했습니다.
select *
from pg_settings
[...]
log_statement none # That was not the value i was expected for !!!
저는 이 방법을 사용합니다. https://stackoverflow.com/a/41912295/2294168
command: postgres -c config_file=/etc/postgresql.conf
언급URL : https://stackoverflow.com/questions/722221/how-to-log-postgresql-queries
'source' 카테고리의 다른 글
Xcode 8 제출 시 "aps-environment 자격이 앱 서명에서 누락됨" (0) | 2023.05.07 |
---|---|
Xcode에서 실제 아이폰 장치로 아이폰 애플리케이션을 배포하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
텍스트 상자가 WPF의 숫자 입력만 수락하도록 하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
MSYS에서 폴더 찾아보기 (0) | 2023.05.07 |
WPF의 이미지가 흐려짐 (0) | 2023.05.07 |