07-Nginx 日志管理及自动切割

news2024/10/7 8:31:37

  1. Nginx 日志管理及自动切割

对于程序员、运维来说,日志非常得重要。通过日志可以查看到很多请求访问信息,及异常信息。Nginx 也提供了对日志的强大支持。

      1. 日志管理范围

首先,下面要讲的这些日志相关属性可以配置在任意模块。在不同的模块,记录的是不同请求的日志信息。即,日志记录的请求范围是不同的。Nginx 日志一般可以指定三个范围: http{}模块范围、server{}模块范围,与 location{}模块范围。

  1. http{}模块范围

只要有请求通过 http 协议访问该 Nginx,就会有日志信息写入到这里的日志文件。

  1. server{}模块范围

只要有请求访问当前 Server,就会有日志信息写入到这里的日志文件。

 

  1. location{}模拟范围

只要有请求访问当前 location,就会有日志信息写入到这里的日志文件。

 

      1. 日志管理指令

下面以 http{}模块下的日志为例来学习 Nginx 日志管理指令。

 Nginx 的日志分为两类:访问日志与错误日志。Nginx 整个系统的默认日志在生成预编译文件 makefile 时就已经默认给配置好了。当然,无论是访问日志还是错误日志,其默认路径与名称在 nginx.conf 中均是可以修改的。在配置文件中不仅定义了日志文件的路径及名称, 还定义了日志格式。

  1. log_format

 用于设置访问日志的格式,其后的 main 是为该格式所起的名称,可以任意,而其后面的内容则为具体格式,通过 Nginx 内置变量定义。

  1. $remote_addr获取访问者的 IP 地址。若当前 Nginx 是反代服务器,则此变量获取到的就是客户端的 IP 地址;若当前 Nginx 是静态代理服务器,则此变量获取到的是反代服务器的 IP 地址。
  2. $http_x_forwarded_for获取客户端浏览器的 IP。若当前 Nginx 是反代服务器,则此变量获取到的值为杠(-)。若当前 Nginx 是静态代理服务器,则此变量获取到的是客户端的IP 地址。
  3. $remote_user获取访问者的用户名。
  4. $time_local获取请求访问的时间与时区。
  5. $request获取请求的相关信息,包含请求方式、请求的 URI,及访问协议。
  6. $status后端服务器向其返回的状态码,例如 200。
  7. $body_bytes_sent后端服务器向客户端发送的响应体内容字节数。
  8. $http_referer获取当前请求是从哪个页面过来的。其值在这里显示为杠(-)。
  9. $http_user_agent用户所使用的代理,一般为浏览器。
  1. access_log

 该指令用于设置访问日志。上面的格式包含三个参数:

    1. 第一个参数是日志的存放路径与日志文件名;
    2. 第二个参数是日志格式名;
    3. 第三个参数是日志文件所使用的缓存。不过,即使不指定 buffer,其也会存在默认日志缓存的。
    4. access_log 还可以跟一个参数 off,用于关闭访问日志,即直接写 access_log off 即可关闭访问日志。
  1. error_log

 该指令用于指定错误日志的路径与文件名。需要注意以下几点:

  1. 其不能指定格式,因为其有默认格式。
  2. 可以使用自己指定的错误日志文件,不过,将来的访问异常日志就不会再写入到默认的

logs/error.log 文件中了。所以关于错误日志,一般使用默认的即可。

  1. 错误日志级别由低到高有:[debug | info | notice | warn | error | crit | alert | emerg],默

认为error,级别越高记录的信息越少。

  1. 错误日志默认是开启的。关闭错误日志的写法为  error_log     /dev/null;
  2. open_log_file_cache

该指令用于打开日志文件读缓存,将日志信息读取到缓存中,以加快对日志的访问。该功能默认为 off,即 open_log_file_cache off;

      1. 默认的/favicon.ico 请求

客户端对于服务端页面会自动提交一个/favicon.ico 请求,若没有 favicon.ico 文件则会在日志文件中报出 404。

从网上任意下载一个 ico 图标,将其重命名为 favicon.ico,然后放到 Linux 中的任意目录。然后再修改 nginx.conf 文件,在其中添加如下的 location{}模块。注意,若将其添加到的位置与页面在同一个目录,下面的 location{}模块不用设置。

 

      1. 日志自动切割

这里仅仅简单介绍一下日志切割的实现步骤,具体实现,网上非常多,用时再查即可。

  1. 创建切割shell 脚本文件

在 Linux 下创建一个实现日志切割的 shell 脚本文件,脚本文件的具体内容可以从网上查找,资源很多。例如,将该 shell 文件创建在 Nginx 安装目录下的 logs 目录中,并命名为cut_nginx_log.sh。

  1. 为该文件添加可执行权限

该文件是要作为定时任务被执行的,所以该文件需要具有可执行权限。

  1. 向 crontab 中添加一个定时任务

crontab 是 Linux 中的一个定义任务文件,每一行都代表一项定义任务。每行由 6 个字段组成,前 5 段是时间设定段,第 6 段是任务段。具体格式如下:

minute(0-59)     hour(0-23)     day(1-31)     month(1-12)     week(0-6)     command

本例执行如下命令后会打开文本编辑器,然后再输入如下文本内容即可。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如果我在初用tomcat时,是看到这篇tomcat架构解析,是不是就不会被说菜鸡了!

写在前面 tomcat作为一个中间件,相信绝大多数java程序员,多多少少都应该用到过吧。尤其是在springboot还未流行的时候,本地环境,没少跑tomcat服务吧? 我们一般都是直接使用,将我们的web服务,直…

疫情下跨越一万公里的友情:熊超与飒特电子哨兵的故事

在熊超(化名)家中,有一面照片墙,上面贴满了他在非洲工作十多年的剪影。这些照片整齐地摆放成一个心形,挂在客厅最显眼的位置。每当亲戚朋友来访,熊超都会为他们讲起自己援助非洲十余年发生的故事。 十多年…

【无标题】EXCEL实现刷题

实现的思路: 导入题库word文件导入到excel–>绑定随机事件选定考题。 word题库导入Excel表的代码如下: 整理题库结构(添加题号,分离答案) Public Sub numAdd() Dim rng As Range, RNG1 As Range With Sheet1 .[b1]…

linuex服务器中如何安装mysql数据库(一次性完成,包含远程连接)

大家好。我是雄雄,欢迎关注微信公众号:雄雄的小课堂 今天给大家介绍一下,如何在新服务器中安装mysql数据库,总是捣鼓服务器,每次都去网上查,次次都不一样,浪费好多时间,这次自己记录…

Imperceptible Backdoor Attack: From Input Space to Feature Representation 笔记

1. 论文信息 论文名称Imperceptible Backdoor Attack: From Input Space to Feature Representation作者Nan Zhong(Fudan University)会议/出版社IJCAI 2022pdf📄在线pdf 本地pdf代码💻pytorch概要文中提出了一种难以察觉的后门…

temporal shift module(TSM)

【官方】Paddle2.1实现视频理解经典模型 — TSM - 飞桨AI Studio本项目将带大家深入理解视频理解领域经典模型TSM。从模型理论讲解入手,深入到代码实践。实践部分基于TSM模型在UCF101数据集上从训练到推理全流程实现行为识别任务。 - 飞桨AI Studiohttps://aistudio…

2. Object中equals和toStirng 源码分析

文章目录1.equals方法2.重写equals方法为何一定要重写hashCode方法?2.1 反例演示3.toString方法4. 整型转二进制我们都知道Object是所有类的父类,那么它里面的一些方法你是否真的理解了呢? 下面我们就以源码为基础来学习这些看似简单的方法吧…

谷歌浏览器无法使用翻译功能的解决方案,谷歌浏览器无法翻译怎么办?谷歌浏览器右键翻译失效了?

如果你发现网站别的方案无效,请参考我的方案, 绝对有效! 2022年起,突然发现谷歌浏览器的翻译功能无法使用了,既然发现问题,就要解决问题,按照下面的步骤一步一步来操作 首先下载最新版谷歌浏览…

[附源码]java毕业设计校园出入管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【Lua基础 第4章】Lua的流程控制、#的作用、table的创建方式、table表常用方法、函数、多返回值、可变长参数

文章目录💨更多相关知识👇一、Lua 的流程控制🔸if语句🌟代码演示🔸if...else 语句🌟代码演示🔸if...elseif...else 语句二、#的作用三、table的创建方式四、table表的常用方法使用🔹…

标记肽Suc-AAPI-pNA、72682-77-0

标记肽Suc-AAPI-对硝基苯胺编号: 184433 中文名称: 标记肽Suc-AAPI-对硝基苯胺 英文名: Suc-Ala-Ala-Pro-Ile-pNA CAS号: 72682-77-0 单字母: Suc-AAPI-pNA 三字母: Suc-Ala-Ala-Pro-Ile-pNA 氨基酸个数: 4 分子式: C27H38O9N6 平均分子量: 590.63 精确分子量: 590.27 等电点(P…

使用MobaXterm tunneling访问集群(服务器)jupyter notebook

应用场景 想要在本地计算机C上使用高性能服务器上的计算节点运行jupyter notebook相关的代码。 高性能服务器上通常只有一个公网ip用于账户登陆管理,但有多个计算节点,需要使用公网IP通过SSH方式登入管理节点A,并使用SSH二次登陆计算节点B&…

CKKS同态加密方案初步学习

如论文标题所示,CKKS允许复数和实数运算,是一个近似精度计算的方案,也就是解密出来的明文和加密之前的明文不会完全一致。也就是采用丢失部分精度来换取较高的效率。 CKKS的核心是把加密噪声视为近似计算误差的一部分,也就是解密出…

Python项目一:pygname

1.安装pip install pygame 2.加载模块初始化:开始 import sys import pygamepygame.init() #初始化3.创建窗口 3.1pygame .display模块 作用:创建游戏窗口 常见的内置方法: 方法作用 pygame。display.init() 初始化display模块p…

C++11标准模板(STL)- 算法(std::partial_sort)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 排序一个范围的前 N 个元素…

阿里巴巴最新总结「百亿级别并发设计手册」GitHub收获70K标星

随着淘宝购物节和抖音直播平台带货的火热&#xff0c;大批促销活动涌现&#xff0c;「秒杀」这个词也越来越频繁地出现在我们的生活里。 除了那些头部的电商公司&#xff0c;某多、某东&#xff0c;还有各种街、某会、某品等&#xff0c;甚至是一些老牌的传统企业&#xff0c;…

Android持久化技术,好内存不如烂存储

Android持久化技术&#xff0c;好内存不如烂存储前言六、Android持久化技术&#xff0c;好内存不如烂存储6.1 持久化技术介绍6.2 简单文件存储方案6.3 SharedPreferences存储方案6.3.1 获取SharedPreferences对象的三种方式6.3.2 使用SharedPreferences对象存储和读取数据6.4 S…

Model Fusion of Heterogeneous Neural Networks via Cross-Layer Alignment论文阅读

论文地址点这里 一. 介绍 本文是针对异构的网络融合技术&#xff0c;是基于上一篇OTFusion的论文进行的工作&#xff0c;解决了神经元关联问题。当所有的网络都具有相同的架构时&#xff0c;OTFusion比普通平均算法有明显的改进。与其他基于平均的模型融合方法相比&#xff0…

如何制作一个实时在线显示评论

通过循环容器及数据表功能&#xff0c;制作一个发送评论实时显示的功能 效果展示 具体步骤 制作评论背景 制作评论样式 制作一个发送评论输入框 制作一个发送按钮 创建评论数据表 添加获取评论事件 创建发送评论触发器 数据绑定与设置 步骤分解 制作评论背景 拖拽 循环容器 到…

Go基础学习【2】

文章目录一&#xff1a;数组二&#xff1a;map集合三&#xff1a;包四&#xff1a;结构体一&#xff1a;数组 1.命名 var arrAge [5]int{1,2,3,4,5} var arrAge […]int{1,2,4,5,6} var arrAge [5]string{3:“sfd”,5:“asdf”} 2.传递 通过传递数组的指针 和 使用数组的切片…