2012-10-01 31 views

Trả lời

21

Nếu bạn đặt

log_min_duration_statement = 0 
log_statement = all 

trong postgresql.conf của bạn, sau đó bạn sẽ thấy tất cả các báo cáo được đăng nhập vào logfile Postgres.

Nếu bạn kích hoạt

log_duration 

đó cũng sẽ in thời gian thực hiện cho mỗi câu lệnh. Điều này được tắt theo mặc định.

Sử dụng tham số log_statement bạn có thể kiểm soát loại của câu lệnh bạn muốn đăng nhập (DDL, DML, ...)

Điều này sẽ tạo ra một đầu ra như thế này trong logfile:

 
2012-10-01 13:00:43 CEST postgres LOG: statement: select count(*) from pg_class; 
2012-10-01 13:00:43 CEST postgres LOG: duration: 47.000 ms 

Xem thêm chi tiết trong cuốn hướng dẫn:

Nếu bạn muốn danh sách hàng ngày, bạn có thể muốn định cấu hình nhật ký để xoay hàng ngày. Một lần nữa điều này được mô tả trong sách hướng dẫn.

+0

cảm ơn! cho hướng dẫn Mr.a_horse_with_no_name, nhưng chỉ truy vấn là đăng nhập khi tôi thay đổi trong postgresql.conf, Những gì tôi thực sự muốn là truy vấn và thời gian thực hiện liên quan. – 9ine

+0

@ 9ine: bạn có ý nghĩa gì với "truy vấn duy nhất là nhật ký"? Đó là những gì bạn yêu cầu: để đăng nhập truy vấn. –

+0

Tôi có nghĩa là truy vấn và thời gian thực hiện liên quan. – 9ine

2

Tôi tin rằng OP thực sự yêu cầu thời gian thực thi chứ không phải là dấu thời gian.

Để bao gồm thời gian trong dữ liệu ghi nhận, mở pgsql/<version>/data/postgresql.conf, tìm dòng mà đọc

#log_duration = off 

và thay đổi nó để

log_duration = on 

Nếu bạn không thể tìm thấy các thông số nhất định, chỉ thêm nó vào một dòng mới trong tập tin.

Sau khi lưu các thay đổi, khởi động lại dịch vụ postgresql, hoặc chỉ gọi

pg_ctl reload -D <path to the directory of postgresql.conf> 

ví dụ

pg_ctl reload -D /var/lib/pgsql/9.2/data/ 

để tải lại cấu hình.

Các vấn đề liên quan