Wie protokolliere ich alle MySQL-Abfragen in einer Protokolldatei?

17

Ich benutze MySQL 5.6.12 unter Wamp Server-Umgebung. Jetzt möchte ich alle Abfragen in die ".log" -Datei, die Abfragen, die von PHP oder von PHPMyAdmin ausgeführt werden, protokollieren. Ich möchte sie protokollieren.

Qazi
quelle

Antworten:

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

Beachten Sie, dass die Aktivierung general_logauf einem Produktionsserver mit einem Mehraufwand verbunden ist, den Sie vermeiden sollten. Sie können problematische Abfragen von überprüfen slow log.

Mahesh Patil
quelle
1
Für mich musste ich "general_log = 1" anstelle von "general_log = on" verwenden.
GuyPaddock
Arbeitete auf Wamp Server mit MySQL 5.6.7. Das einzige, was ich ändern musste, waren die Pfade zu den Dateien, in meinem Fall C: \ wamp \ logs \ mysql_query.log.
Mário Rodrigues
Warum all diese Konfigurationswerte? Nur general_logund general_log_fileist genug.
Laurent
8

Da dies die Art von Dingen ist, die Sie wahrscheinlich nur vorübergehend ausführen möchten, kann es nützlich sein, dies nicht über die Konfigurationsdatei, sondern über die Shell zu tun:

> 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";
Xiong Chiamiov
quelle
5

Fügen Sie diese beiden Zeilen in my.cnf ein.

[mysqld]

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

Dadurch werden alle Abfragen auf dem Server protokolliert , nicht nur von PHP / PHPMyAdmin.

Seien Sie jedoch vorsichtig - das Aktivieren des allgemeinen Protokolls kann Ihren Server stark belasten. Nur sparsam für kurze Zeiträume / zum Debuggen verwenden.

Die Dokumentation finden Sie hier . Dort angekommen:

Verwenden Sie die globalen Systemvariablen general_log und general_log_file, um das allgemeine Abfrageprotokoll zu deaktivieren oder zu aktivieren oder den Namen der Protokolldatei zur Laufzeit zu ändern. Setzen Sie general_log auf 0 (oder OFF), um das Protokoll zu deaktivieren, oder auf 1 (oder ON), um es zu aktivieren. Legen Sie general_log_file fest, um den Namen der Protokolldatei anzugeben.

So,

general_log     = on

und

general_log     = 1

sind Synonyme!

Vérace
quelle
Für mich musste ich "general_log = 1" anstelle von "general_log = on" verwenden.
GuyPaddock
@GuyPaddock Welche MySQL-Version verwenden Sie?
Vérace