基于mysql的general_log 可以实现日志追踪,这在平时的开发调试中非常有用。
首先可以通过
show variables like 'general_log'; -- 查看日志是否开启
来查看mysqlServer的日志状态,默认是关闭的,因为这个日志的量非常大对资源是一个比较大的开销,所以千万不要在生产环境中开启这个功能!
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | OFF |
+---------------+-------+
1 row in set (0.00 sec)
接下来通过
set global general_log=on; -- 开启日志功能
来开启日志功能,再次查询
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log | ON |
+---------------+-------+
1 row in set (0.00 sec)
general 可以将日志以文件和数据库两种形式进行记录,记录到数据表中要比记录到文件耗费更多的系统资源,所以推荐记录到文件的用法。
通过下边命令可以设置记录到文件还是数据表。
set global log_output='file/table';
通过下边命令可以查看当前的记录类型
show variables like 'log_output'; -- 看看日志输出类型 table或file
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | FILE |
+---------------+-------+
1 row in set (0.00 sec)
可以看到默认是存的file
查看日志文件的位置
show variables like 'general_log_file'; -- 看看日志文件保存位置
+------------------+------------------------------------+
| Variable_name | Value |
+------------------+------------------------------------+
| general_log_file | /usr/local/mysql/var/localhost.log |
+------------------+------------------------------------+
1 row in set (0.00 sec)
重新设置日志文件位置
set global general_log_file='/data/mysql_log/general.log'; -- 设置日志文件保存位置
如果报错
ERROR 1231 (42000): Variable 'general_log_file' can't be set to the value of '/data/mysql/general.log'
检查一下目录权限,将目录的owner改为mysql,注意root目录下即使改了owner也是不行的
关闭日志功能
set global general_log=off; -- 关闭日志功能