如何将所有mysql查询记录到日志文件中?


17

我在Wamp服务器环境下使用Mysql 5.6.12。现在我想将所有查询记录到“ .log”文件中,这些查询是通过PHP或从PHPMyAdmin运行的,我想将它们记录下来...

Answers:


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

请注意,general_log在生产服务器上启用会产生开销,您应该避免这样做。您可以从中检查有问题的查询slow log


1
对我来说,我必须使用“ general_log = 1”而不是“ general_log = on”。
GuyPaddock 2014年

使用mysql 5.6.7在Wamp Server上工作。我唯一需要更改的是tje文件的路径,在我的情况下为C:\ wamp \ logs \ mysql_query.log。
马里奥·罗德里格斯

为什么所有这些配置值?公正general_log并且general_log_file足够。
劳伦特

8

由于这是您可能只想临时执行的操作,因此从外壳而不是通过配置文件执行此操作可能会很有用:

> 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

将这两行放在my.cnf中。

[mysqld]

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

这会将所有查询从任何来源记录到服务器,而不仅仅是PHP / PHPMyAdmin。

不过请小心-启用常规日志可能会给您的服务器带来沉重的负担。仅在短期/调试中少量使用。

该文档可在此处获得。来回:

要在运行时禁用或启用常规查询日志或更改日志文件名,请使用全局general_log和general_log_file系统变量。将general_log设置为0(或OFF)以禁用该日志,或将其设置为1(或ON)以启用它。设置general_log_file以指定日志文件的名称。

所以,

general_log     = on

general_log     = 1

是同义词!


对我来说,我必须使用“ general_log = 1”而不是“ general_log = on”。
GuyPaddock 2014年

@GuyPaddock您正在使用哪个版本的MySQL?
Vérace
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.