在开发时,通常需要记录一些log方便后期排错和优化。无论是php、nginx,还是MySQL数据库,都提供记录log功能,在适当的时候打开log记录功能,有助于我们发现代码中的各种问题。
1.php日志
在php的配置文件php.ini中设置下面的选项:
;开启日志记录和记录的错误等级
log_errors = on
这样,一旦php在运行时遇到错误,就会被记录。log文件的格式:时间+错误级别+错误信息+发生错误的文件+错误所在的代码行。
2.nginx日志
Nginx日志主要分为两种:访问日志和错误日志。
2.1访问日志
访问日志主要记录客户端访问Nginx的每一个请求,格式可以自定义。通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息。Nginx中访问日志相关指令主要有两条:
(1)log_format
log_format用来设置日志格式,也就是日志文件中每条日志的格式,具体如下:
log_format name(格式名称) type(格式样式)
举例说明如下:
log_format main ‘$server_name $remote_addr - $remote_user [$time_local] "$request" ‘
‘$status $uptream_status $body_bytes_sent "$http_referer" ‘
‘"$http_user_agent" "$http_x_forwarded_for" ‘
‘$ssl_protocol $ssl_cipher $upstream_addr $request_time $upstream_response_time‘;
(2)access_log
access_log指令用来指定日志文件的存放路径(包含日志文件名)、格式和缓存大小,具体如下:
access_log path(存放路径) [format(自定义日志格式名称) [buffer=size | off]]
2.2错误日志
错误日志主要记录客户端访问Nginx出错时的日志,格式不支持自定义。通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的信息。错误日志由指令error_log来指定,具体格式如下:
error_log path(存放路径) level(日志等级)
path含义同access_log,level表示日志等级,具体如下:
[ debug | info | notice | warn | error | crit ]
从左至右,日志详细程度逐级递减,即debug最详细,crit最少。
3.MySQL日志
MySQL中有四种日志,分别是错误日志、二进制日志、查询日志和慢查询日志。这些log可以在my.conf文件中配置。
3.1错误日志
错误日志记录MySQL启动和停止,以及服务器运行过程中发生的任何错误的相关信息。在配置文件里配置 “–log-error=[file-name]”指定错误日志存放的位置。如果没有指定[file-name],默认hostname.err为文件名。
2015-08-02 21:21:41 8198 [Note] Server hostname (bind-address): ‘*‘; port: 3306
2015-08-02 21:21:42 8198 [Note] IPv6 is available.
2015-08-02 21:21:42 8198 [Note] - ‘::‘ resolves to ‘::‘;
2015-08-02 21:21:42 8198 [Note] Server socket created on IP: ‘::‘.
2015-08-02 21:21:42 8198 [Note] Event Scheduler: Loaded 0 events
2015-08-02 21:21:42 8198 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: ‘5.6.23-log‘ socket: ‘/tmp/mysql.sock‘ port: 3306 Source distribution
2015-08-02 21:21:43 8198 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown
上面是日志的摘录一部分。错误类型有 note/error等。
3.2二进制日志
二进制日志通常被称为binlog,包含所有更新数据或者已经潜在更新数据的所有语句。数据以“事件”的形式保存,描述数据更新,还包括关于每个更新数据库的语句的执行时间信息。二进制日志记录着所有的DDL和DML,但不包括数据查询语句。
binlog以binary方式存放,不能直接查看,需要使用MySQL提供的mysqlbinlog工具查看。
3.3查询日志
查询日志记录client的所有语句,在配置文件中通过配置log选项启用,启用方法:
log=/var/log/mysql_query.log
查询日志也是一个文件,由于查询日志记录数据库所有操作,对访问频繁的系统,这种日志会造成性能影响,建议关闭或者间歇性打开。如果遇到安全问题,也可以通过这个日志进行排查。
3.4慢查询日志
这个大家应该很熟悉,它要在配置中设置 long_query_time(单位:秒),当某条SQL语句执行事件超过它的,并且慢查日志开启后,慢查语句就存放到指定的位置:
#日志存放的文件位置
log_slow_queries=/usr/local/mysql/var/slow.log
慢查询日志对于跟踪有问题的查询非常有用,对MySQL的性能影响不大,建议打开。慢查询日志是MySQL优化的关键依据之一。
版权声明:本文为博主原创文章,未经博主允许不得转载。