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.

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.


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";

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!


Für mich musste ich "general_log = 1" anstelle von "general_log = on" verwenden.
GuyPaddock

@GuyPaddock Welche MySQL-Version verwenden Sie?
Vérace
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.