web-dev-qa-db-fra.com

Comment enregistrer toutes les requêtes mysql dans un fichier journal?

J'utilise Mysql 5.6.12 sous environnement de serveur Wamp. Maintenant, je veux enregistrer toutes les requêtes dans le fichier ".log", les requêtes qui sont exécutées par PHP ou depuis PHPMyAdmin, je veux les enregistrer ...

18
Qazi
[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

Notez que l'activation de general_log sur un serveur de production a des frais généraux, vous devez l'éviter. Vous pouvez vérifier les requêtes problématiques de slow log.

20
Mahesh Patil

Étant donné que c'est le type de chose que vous ne voulez probablement faire que temporairement, il peut être utile de le faire à partir du shell plutôt que via le fichier de configuration:

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

Mettez ces deux lignes dans my.cnf.

[mysqld]

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

Cela enregistrera toutes les requêtes sur le serveur, à partir de n'importe quelle source, pas seulement PHP/PHPMyAdmin.

Soyez prudent cependant - l'activation du journal général peut placer une lourde charge sur votre serveur. À utiliser avec parcimonie pour de courtes périodes/débogage uniquement.

La documentation est disponible ici . Là-bas:

Pour désactiver ou activer le journal général des requêtes ou modifier le nom du fichier journal au moment de l'exécution, utilisez les variables système globales general_log et general_log_file. Définissez general_log sur 0 (ou OFF) pour désactiver le journal ou sur 1 (ou ON) pour l'activer. Définissez general_log_file pour spécifier le nom du fichier journal.

Donc,

general_log     = on

et

general_log     = 1

sont synonymes!

5
Vérace