Làm thế nào để đăng nhập tất cả các truy vấn mysql vào tệp nhật ký?


17

Tôi đang sử dụng Mysql 5.6.12 trong môi trường máy chủ Wamp. Bây giờ tôi muốn đăng nhập Tất cả các truy vấn vào tệp ".log", các truy vấn đang chạy bởi PHP hoặc từ PHPMyAdmin, tôi muốn đăng nhập chúng ...

Câu trả lời:


20
[mysqld]
# Set Slow Query Log
long_query_time = 1
slow_query_log = 1
slow_query_log_file = /usr/log/slowquery.log
log_queries_not_using_indexes = 1

#Set General Log
general_log = on
general_log_file=/usr/log/general.log

Lưu ý rằng việc kích hoạt general_logtrên một máy chủ sản xuất có phí, bạn nên tránh nó. Bạn có thể kiểm tra các truy vấn có vấn đề từ slow log.


1
Đối với tôi, tôi đã phải sử dụng "general_log = 1" thay vì "general_log = on".
GuyPaddock

Hoạt động trên Wamp Server, sử dụng mysql 5.6.7. Điều duy nhất tôi phải thay đổi là đường dẫn đến các tệp tje, trong trường hợp của tôi, C: \ wamp \ log \ mysql_query.log.
Mário Coleues

Tại sao tất cả các giá trị cấu hình? Chỉ general_loggeneral_log_filelà đủ.
nguyệt quế

8

Vì đây là loại điều bạn có thể chỉ muốn làm tạm thời, nên có thể hữu ích khi thực hiện việc này từ trình bao thay vì thông qua tệp cấu hình:

> set global general_log_file = "/var/log/mysql/queries.log";
> set global general_log = "ON";
[wait some time, hit some pages, whatever]
> set global general_log = "OFF";

5

Đặt hai dòng này trong my.cnf.

[mysqld]

general_log     = on
general_log_file=/users/ugrad/linehanp/mydb/logfile.txt

Điều này sẽ ghi lại tất cả các truy vấn đến máy chủ, từ bất kỳ nguồn nào, không chỉ PHP / PHPMyAdmin.

Hãy cẩn thận - cho phép nhật ký chung có thể tải nặng trên máy chủ của bạn. Chỉ được sử dụng một cách tiết kiệm trong thời gian ngắn / gỡ lỗi.

Các tài liệu có sẵn ở đây . Có đấy:

Để vô hiệu hóa hoặc kích hoạt nhật ký truy vấn chung hoặc thay đổi tên tệp nhật ký trong thời gian chạy, hãy sử dụng các biến hệ thống general_log và general_log_file toàn cầu. Đặt general_log thành 0 (hoặc TẮT) để tắt nhật ký hoặc thành 1 (hoặc BẬT) để bật. Đặt general_log_file để chỉ định tên của tệp nhật ký.

Vì thế,

general_log     = on

general_log     = 1

là những từ đồng nghĩa!


Đối với tôi, tôi đã phải sử dụng "general_log = 1" thay vì "general_log = on".
GuyPaddock

@GuyPaddock bạn đang sử dụng phiên bản nào của MySQL?
Vérace
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.