Nginx按指定格式记录访问日志

今天突然想起来一个日志的一个东西,因为拉项目无意中看到了日志文件的一些东西,现在不经常做后端了,加上其他的一些原因吧.有时候有些问题也没想太多,马马虎虎就过了,后来想想还是要记录一下这方面的处理过程吧: 

一般我们作为开发人员关注的日志只是在应用程序层面的,我们称它为应用程序日志,访问日志和错误日志可以被认为是应用程序日志的一部分,因为它们都与应用程序的运行状态和用户访问行为有关。

访问日志:

其实我们在用常用的web服务器上都有这项功能,我们这里用Nginx举例,我们的访问日志一般正常都是什么设备在什么地址访问了我们的什么资源,后端服务器的响应时间是多少,客户端请求处理的总时间是多少;请求使用的 HTTP 方法等等,常见的基本上就上面的这些了,那我们就可以在Nginx的HTTP块里面设置日志记录参数就行了,比如下面的配置:

http {### Basic Settings##sendfile on;tcp_nopush on;types_hash_max_size 2048;# server_tokens off;# server_names_hash_bucket_size 64;# server_name_in_redirect off;include /etc/nginx/mime.types;default_type application/octet-stream;### SSL Settings##ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLEssl_prefer_server_ciphers on;### Logging Settings##log_format main '$remote_addr | $remote_user | [$time_local] | "$request" '' | $status $body_bytes_sent | "$http_referer" ''| "$http_user_agent" | "$http_x_forwarded_for" | "$request_method" | request_total_time:"$request_time" | "$upstream_response_time"';access_log /var/log/nginx/access.log main;error_log /var/log/nginx/error.log;### Gzip Settings##gzip on;# gzip_vary on;# gzip_proxied any;# gzip_comp_level 6;# gzip_buffers 16 8k;# gzip_http_version 1.1;# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;### Virtual Host Configs##include /etc/nginx/conf.d/*.conf;include /etc/nginx/sites-enabled/*;
}

首先我们肯定先把访问日志打开(access_log),然后阐述一下上面的参数:

  1. $remote_addr:代表发起请求的客户端的IP地址。

  2. $remote_user:代表经过身份验证的用户的用户名,如果没有身份验证则为连字符(-)。

  3. [$time_local]:代表服务器处理请求时的本地时间,用方括号括起来。

  4. "$request":代表请求的第一行,包括HTTP方法、请求的URL和HTTP协议。

  5. |:是一个分隔符(管道符号),用于在日志条目中分隔不同的字段。

  6. $status:代表返回给客户端的状态码(例如,成功请求的状态码为200)。

  7. $body_bytes_sent:代表发送给客户端的响应的大小,以字节为单位。

  8. "$http_referer":代表Referer HTTP头部,指示引导客户端访问当前页面的页面的URL。

  9. "$http_user_agent":代表User-Agent HTTP头部,指示发起请求的客户端的用户代理(例如,浏览器)。

  10. "$http_x_forwarded_for":代表X-Forwarded-For HTTP头部,如果请求经过代理服务器或负载均衡器,则可能包含一个逗号分隔的客户端IP地址列表。

  11. "$request_method":代表请求中使用的HTTP方法(例如,GET、POST)。

  12. request_total_time:"$request_time":代表处理请求所花费的总时间,包括上游处理时间。数值被双引号括起来。

然后我们重启一下Nginx 服务器,再去请求就可以看到日志 文件已经陆续写入了:看一下效果

你会看到access.log已经开始记录了,那如果我们每每天都会有大量的记录放在同一个文件会不会时间就了会很臃肿这个文件,至于这个问题你可以用 logrotate 日志轮转操作去解决, 这边我用了小时级别的划分,每隔一个小时都会轮转一下;

/var/log/nginx/*.log {hourlymissingokrotate 14compressdelaycompressnotifemptycreate 0640 www-data admsharedscriptsprerotateif [ -d /etc/logrotate.d/httpd-prerotate ]; then \run-parts /etc/logrotate.d/httpd-prerotate; \fi \endscriptpostrotateinvoke-rc.d nginx rotate >/dev/null 2>&1endscript
}
~                        

所以你会看到很多access.log文件,

关于logrotate后面会更新 ,学过linux的应该都知道这个玩意,很方便的程序,基本也是Linux的预装程序,时间有点夜深了,先写到这里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/259716.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页设计--第6次课后作业

试用Vue相关指令完成对以下json数据的显示。显示效果如下: 其中:gender1 显示为女,gender2显示为男。价格超过30元,显示“有点小贵”。价格少于等于30元,则显示“价格亲民”。 data: {books: [{"id": "…

hook其他调试技巧

输出堆栈信息 通过 android.util.Log 输出当前线程的堆栈跟踪信息。 function showStacks() {Java.perform(function () {console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new() )); }) } 可以在需要的…

3GPP标准查看、下载和几个UE相关系列标准

由于一直做终端侧协议。最近以UE为核心重新下载了一系列文档。 总结并举例一下分类标准。 如何查看3GPP标准列表 实际上在3GPP网站如下链接:Specifications by Series,每个系列以及分类都说的很清楚。 几个系列分类举例 和终端协议层工作比较关系密切…

阿里云国际基于CentOS系统镜像快速部署Apache服务

阿里云轻量应用服务器提供了Windows Server系统镜像和主流的Linux系统镜像,您可以通过该类镜像创建纯净、安全、稳定的运行环境。本文以CentOS 7.6系统镜像为例,介绍如何快速配置Apache服务。 背景信息 注意,阿里云国际通过corebyt注册并充…

Spring Boot 整合 xxl-job 保姆级教程!

文章目录 介绍使用初始化“调度数据库”配置调度中心配置“执行器项目”调度任务 介绍 首先我们介绍一下什么是xxl-job,根据官方定义,XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码…

LeetCode(52)最小栈【栈】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 最小栈 1.题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void…

激光打标机在智能手表上的应用:科技与时尚的完美结合

随着科技的飞速发展,智能手表已经成为我们日常生活中不可或缺的智能设备。而在智能手表制造中,激光打标机扮演着至关重要的角色。本文将详细介绍激光打标机在智能手表制造中的应用,以及其带来的优势和影响。 ​ 一、激光打标机在智能手表制…

UE4 材质实现Glitch效果

材质实现Glitch效果 UE4 材质实现Glitch效果预览1预览2 UE4 材质实现Glitch效果 预览1 添加材质函数: MF_RandomNoise 添加材质: 预览2 添加材质函数MF_CustomPanner: 添加材质函数:MF_Glitch 材质添加: 下面用…

解决Eslint和Prettier关于三元运算符的冲突问题

三元运算符Prettier的格式化 三元运算符Eslint的格式要求 解决办法 // eslint加入配置,屏蔽标红报错indent: [error, 2, { ignoredNodes: [ConditionalExpression] }]效果

MS5228/5248/5268:2.7V 到 5.5V、 12/14/16Bit、内置基准、八通道数模转换器

MS5228/MS5248/MS5268 是一款 12/14/16bit 八通道输出的电压型 DAC ,内部集成上电复位电路、可选内部基准、接口采用四线串口模式, 最高工作频率可以到 40MHz ,可以兼容 SPI 、 QSPI 、 DSP 接口和 Microwire 串口。输出接到一个 …

Tomcat web站点部署

目录 1 使用war包部署web站点 1.1 上传war包 1.2 删除Tomcat测试页面 1.3 将刚才上传的war包拷贝到webapps目录中 1.4 启动Tomcat 1.5 浏览器访问 2 自定义默认网站目录 方法一: 方法二: 1 使用war包部署web站点 1.1 上传war包 链接: 百度网盘war包 …

EasyExcel-最简单的读写excel工具类

前言&#xff1a; easyExcel 的官网文档给的示例非常全&#xff0c;可以参考https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read 在此我贴出自己的工具类&#xff0c;可以直接用 导包 <dependency><groupId>com.alibaba</groupId><…