nginx 日志功能详解
nginx 日志功能
在 nginx 中有两种日志:
- access_log:访问日志,通过访问日志可以获取用户的IP、请求处理的时间、浏览器信息等
- error_log:错误日志,记录了访问出错的信息,可以用于定位错误的原因
设置 access_log
访问日志主要用于记录客户端的请求。客户端向 nginx 服务器发起的每一次请求都会被记录到 access_log 中。
包含请求 IP、时间、访问 url 等等,当然访问日志中具体记录哪些日志信息我们可以通过 log_format 设置。
access_log 指令语法
access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]]; # 设置访问日志
access_log off; # 关闭访问日志
- path 表示指定日志存放位置
- format 表示日志格式即日志中记录的内容
- buffer 用于指定日志写入时的缓存大小,默认 64k
- gzip 日志写入前先压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢,默认1
- flush 设置缓存的时间,如果超过flush指定的时间,缓存中的内容将被清空
- if 判断条件,如果指定的条件计算为0或空字符串,那么该请求不会被写入日志
设置 buffer 的目的,是为了避免高频对磁盘进行读写操作,即暂时先不将日志写入磁盘,而是存入内存中,等达到了设置缓存大小之后再一次性写入。
注意 flush 指令是和 buffer 一起使用的,即指定 buffer=size 之后,如果超过 flush 指令设定的时间仍然未达到缓存区大小,则也会被写入到磁盘,没有 buffer 而只有 flush 则会报错。
access_log 配置示例
access_log /var/logs/nginx-access.log
上面的例子指定日志的写入路径为 /var/logs/nginx-access.log 日志格式默认使用 combined:
access_log /var/logs/nginx-access.log buffer=32k gzip flush=1m
该例子指定日志写入路径为 /var/logs/nginx-access.log 日志格式默认使用 combined ,日志的缓存大小为 32k,日志写入前启用 gzip 压缩,压缩比值 1,缓存数据的有效时间为 1 分钟。
需要注意,在 nginx.conf 文件中 access_log 默认是关闭的:

去掉注释:

access_log 日志查看
通过 cat 命令查看日志:

它的格式为:

127.0.0.1 - - [21/Jul/2020:21:10:27 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36" "-"
1. $remote_addr(客户端(用户) IP地址) 127.0.0.1
2. $remote_user(需要在基于认证规则的时候,才有) ''
3. $time_local(访问时间) 21/Jul/2020:21:10:27 +0800
4. $request(请求的 url 地址) "GET / HTTP/1.1"
5. $body_bytes_sent(nginx返回给客户端的响应体的字节数,即不含响应头) 0
6. $status(请求状态) 304
7. $http_referer(请求来源) "-"
8. $http_user_agent(客户端信息) "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"
9. $http_x_forwarded_for(表示 HTTP 请求端真实 IP) "-"
我们也可以根据自己需要日志信息在 nginx 配置文件中修改日志格式。
设置 error_log
error_log 错误日志,记录了访问出错的信息,可以用于定位错误的原因。
error_log 指令语法
error_log file [level];
第一个参数指写入错误日志的路径
第二个参数指日志的级别。level 可以是:debug、info、notice、warn、error、crit、alert、emerg 中的任意值。只有日志的错误级别大于等于level 指定的值才会被写入错误日志中,默认值是 error。
error_log 配置示例
error_log logs/error.log error;
error_log 日志查看

2020/07/21 18:21:47 [emerg] 57325#0: bind() to 0.0.0.0:9000 failed (48: Address already in use)
1. 发生错误时间:2020/07/21 18:21:47
2. 日志级别:emerg
3. 详细信息:bind() to 0.0.0.0:9000 failed (48: Address already in use)
参考文章
nginx 日志功能详解的更多相关文章
- 关于syslog日志功能详解 事件日志分析、EventLog Analyzer
关于syslog日志功能详解 事件日志分析.EventLog Analyzer 一.日志管理 保障网络安全 Windows系统日志分析 Syslog日志分析 应用程序日志分析 Windows终端服务器 ...
- MySQL日志功能详解
MySQL日志功能详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询日志 它是用来保存所有跟查询相关的日志,这种日志类型默认是关闭状态的,因为MySQL的用户有很多,如果 ...
- Nginx日志深入详解
一.日志分类 Nginx日志主要分为两种:访问日志和错误日志.日志开关在Nginx配置文件(/etc/nginx/nginx.conf)中设置,两种日志都可以选择性关闭,默认都是打开的.1.访问日志 ...
- 干货:yii日志功能详解
转载请注明来自souldak,微博:@evagle 一.基本日志功能 详细的介绍查看官网的document:http://www.yiiframework.com/doc/guide/1.1/en/t ...
- MySQL 日志功能详解
MySQL日志分类 1:查询日志 :query log 2:慢查询日志:slow_query_log 查询执行时长超过指定时长的查询操作所记录日志 3:错误日志:error log ...
- Nginx配置文件nginx.conf中文详解(转)
######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...
- Nginx的配置文件详解
主配置文件: 查看nginx的进程可以看到nginx所使用的配置文件: 主配置一般会被用来设置一些全局的参数: 参数详解: user nobody nobody; //设置nginx ...
- Nginx配置文件中文详解
######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...
- nginx.conf配置详解
######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...
随机推荐
- Python3-算法-冒泡排序
冒泡排序 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来,走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成,这个算法的名字由来是因为越大的元素 ...
- Github仓库如何选择开源许可证
Github仓库如何选择开源许可证 目录 Github仓库如何选择开源许可证 为什么需要开源许可证? 不使用开源许可证对于开发者有何影响? 不使用开源许可证对于项目的使用者有何影响? Github的开 ...
- 关于JavaScript函数
object.defineProperty()函数 再学习这个函数之前,我们先创建一个object对象 var person = {} person.name = "junlebao&quo ...
- 重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 实现不了是研发的借口? 实现不了,有时候是功能复杂度较高难以实 ...
- 在MFC下绘制直线,使用橡皮筋技术,可以使直线效果跟随鼠标移
void CGraphic1View::OnMouseMove(UINT nFlags, CPoint point) { if(MK_LBUTTON == nFlags) { ...
- django admin 添加用户出现外键约束错误
今天在做mxonline项目时,注册了用户表进admin后,想在后台添加一个用户试试,结果出现了错误,经过一番搜索发现以下两个解决方法,不过我只用了一种 报错信息: IntegrityError: ( ...
- No mapping found for HTTP request with URI [/***] in DispatcherServlet with name 'dispatcherServlet'
相信不少Springboot初学者和我一样,都遇到上边这个提示,明明路径都是对的,但就是找不到对于的页面而404了,这也困扰我很长一段时间,我也是不得其解,百度上也鲜有合理回答,因为以前使用的时候,明 ...
- css3中样式计算属性calc()的使用和总结
calc的介绍 在css3样式中有一个类似与函数的计算属性calc(),它主要用于指定元素的长度,无论是border.margin.pading.font-size和width等属性都可以使用calc ...
- NOI 2003 逃学的小孩 (树的直径)
[NOI2003 逃学的小孩] 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?"一 ...
- 显示IP地址的命令
显示IP地址的命令 Centos7默认显示IP地址的命令 #获取所有网卡的IP地址 [root@clf ~]# ip a1: lo: <LOOPBACK,UP,LOWER_UP ...