nginx自定义错误日志

一、Nginx 自定义错误日志笔记

  1. error_log 指令

    • 语法error_log file [level];
    • 作用用于配置 Nginx 的错误日志记录位置级别file 是错误日志文件的路径,可以是绝对路径或相对路径(相对于 Nginx 的安装目录或配置文件中指定的目录);level 是日志级别,用于控制记录哪些级别的错误信息,常见的级别包括 debuginfonoticewarnerrorcritalertemerg,从低到高依次表示详细程度递减,严重性递增。例如,error_log /var/log/nginx/error.log error; 表示将错误日志记录到 /var/log/nginx/error.log 文件中,并且只记录 error 及以上级别的错误信息。
  2. 日志级别含义

    • debug最详细的级别,会记录大量的调试信息,包括 Nginx 内部的各种操作细节,对于排查复杂问题非常有用,但会产生大量的日志数据,可能影响服务器性能和磁盘空间,一般只在开发和调试阶段使用。
    • info提供一般性的信息,例如服务器启动和停止信息、模块加载信息、客户端连接与断开连接信息等,比 debug 级别信息少,有助于了解服务器的运行状态和基本操作情况。
    • notice记录一些重要的事件通知,例如配置文件的重新加载、某些操作的成功完成等,这些信息对于日常运维和监控服务器的关键状态变化有帮助。
    • warn用于记录警告信息,表明可能存在潜在的问题,但服务器仍在正常运行,例如某些模块的初始化出现了非致命的错误、某些配置项可能不太合适但不影响主要功能等。
    • error记录实际发生的错误情况,例如无法找到请求的文件、与后端服务器的连接失败、模块运行时出现的错误等,这些错误可能影响用户的请求处理和服务器的正常功能。
    • crit表示严重错误,通常是一些会影响服务器核心功能或稳定性的问题,例如内存分配失败、磁盘空间不足导致关键操作无法进行等,需要立即关注和解决。
    • alert比 crit 级别更严重,意味着必须立即采取行动来解决问题,否则服务器可能会停止运行或出现严重的安全问题,例如数据丢失的风险等。
    • emerg最严重的级别,通常表示服务器遇到了紧急情况,无法继续正常运行,例如系统崩溃的前奏或者关键系统资源耗尽等。
  3. 配置示例与应用场景

    • 按环境配置日志级别:在开发环境中,可以将日志级别设置为 debug 或 info,以便详细了解服务器的运行情况和排查问题;而在生产环境中,通常将日志级别设置为 error 或 warn,以平衡日志记录的必要性和服务器性能及磁盘空间的消耗。例如:
http {# 开发环境配置error_log /var/log/nginx/error_dev.log debug;# 生产环境配置error_log /var/log/nginx/error_prod.log error;
}
  • 针对特定虚拟主机或 location 块配置日志:可以在 server 或 location 块中单独配置错误日志,以便对不同的网站或应用程序进行独立的错误监控和分析。例如:
server {listen       80;server_name  example.com;error_log /var/log/nginx/example.com_error.log warn;location / {root   /usr/share/nginx/html;index  index.html;}
}
  • 在上述示例中,对于 example.com 这个虚拟主机,其错误日志将记录到 /var/log/nginx/example.com_error.log 文件中,并且日志级别为 warn,这样可以针对该网站的特定问题进行有针对性的排查和分析,而不会受到其他虚拟主机或应用程序的错误日志干扰。

二、Nginx 自定义错误日志实验

  1. 实验环境准备

    • 安装 Nginx:确保服务器上已经安装了 Nginx。如果没有安装,可以使用操作系统的包管理器进行安装(例如在 CentOS 上:yum install nginx -y)。
    • 创建测试文件和配置:在 Nginx 的文档根目录(通常是 /usr/share/nginx/html)下创建一些测试文件,例如 test.html 和 nonexistent.html。同时,准备好 Nginx 的配置文件(通常在 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf 等路径下)。
  2. 配置 Nginx 错误日志

    • 编辑 Nginx 配置文件,在 http 块中添加如下配置:
http {error_log /var/log/nginx/error.log info;server {listen       80;server_name  localhost;location / {root   /usr/share/nginx/html;index  index.html;}location /test {root   /usr/share/nginx/html;index  test.html;}location /nonexistent {root   /usr/share/nginx/html;index  nonexistent.html;}}
}
  • 上述配置将错误日志记录到 /var/log/nginx/error.log 文件中,日志级别为 info。同时,定义了三个 location 块,分别用于测试正常访问、文件存在的访问和文件不存在的访问情况。
  1. 测试错误日志记录

    • 保存 Nginx 配置文件后,使用 nginx -t 检查配置文件语法是否正确,然后使用 systemctl reload nginx(CentOS 系统)或相应的命令重新加载 Nginx 配置。
    • 使用浏览器或 curl 命令进行测试:
      • 访问 http://localhost/,这是一个正常的访问,应该不会在错误日志中记录任何信息(因为没有发生错误)。
      • 访问 http://localhost/test,这会访问到存在的 test.html 文件,也不会产生错误日志记录。
      • 访问 http://localhost/nonexistent,由于 nonexistent.html 文件不存在,这将触发一个 404 错误,根据配置的日志级别为 info,Nginx 应该将这个错误信息记录到 /var/log/nginx/error.log 文件中。
  2. 查看和分析错误日志

    • 使用文本编辑器或 lesstail 等命令查看 /var/log/nginx/error.log 文件,应该能够看到类似于以下的错误记录:
2024/12/15 10:00:00 [error] 1234#0: *1 open() "/usr/share/nginx/html/nonexistent.html" failed (2: No such file or directory), client: 127.0.0.1, server: localhost, request: "GET /nonexistent HTTP/1.1", host: "localhost"
  • 从这条错误记录中,可以获取到错误发生的时间、错误级别(error)、进程 ID(1234)、客户端 IP(127.0.0.1)、服务器名称(localhost)、请求的 URL(/nonexistent)以及错误的具体原因(文件不存在)等信息,这些信息对于排查问题和了解服务器的运行状况非常有帮助。

通过以上实验,你可以深入了解如何在 Nginx 中自定义错误日志,根据实际需求灵活配置日志级别和记录位置,以便更好地监控和管理 Nginx 服务器的运行状态,及时发现和解决潜在的问题。在实际应用中,还可以结合日志分析工具对错误日志进行进一步的分析和统计,提取更有价值的信息,为服务器的优化和维护提供支持。

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

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

相关文章

sql server索引优化语句

第一步 建一个测试表 --create table TestUsers --( -- Id int primary key identity(1,1), -- Username varchar(30) not null, -- Password varchar(10) not null, -- CreateDateTime datetime not null --)第二步 插入100w数据 大概1分钟执行时间 ----插入数据…

多智能体/多机器人网络中的图论法

一、引言 1、网络科学至今受到广泛关注的原因: (1)大量的学科(尤其生物及材料科学)需要对元素间相互作用在多层级系统中所扮演的角色有更深层次的理解; (2)科技的发展促进了综合网…

VS Code Copilot 与 Cursor 对比

选手简介 VS Code Copilot:算是“老牌”编程助手了,虽然Copilot在别的编辑器上也有扩展,不过体验最好的还是VS Code,毕竟都是微软家的所以功能集成更好一些;主要提供的是Complete和Chat能力,也就是代码补全…

基于层次化设计方法,设计一个16位二进制全加器

设计思路:先一个半加器和一个或门,每两个半加器构成一个全加器,每四个全加器组成一个4位全加器,再将这4个4位全加器依次相连组成一个16位二进制全加器。 半加器的逻辑表达式:sumAB; coutAB; 半加器的真值表 全加器的逻…

ES搜索原理

ES搜索原理 bg: 搜索的时候,使用模糊查询经常出现搜索不到的情况,不如mysql的like有效。 https://www.bilibili.com/video/BV1yb421J7oX/?spm_id_from333.337.search-card.all.click&vd_source3f917722acc36b0fcca7cca2d21394e2 基础概念 索引&a…

轻松上手:使用 Vercel 部署 HTML 页面教程

😀 在学习前端的过程中,部署项目往往是一个令人头疼的问题。然而,Vercel 为我们提供了一个便捷且免费的解决方案。 Vercel 是一个强大的云平台,专门用于前端项目的部署和托管。它不仅支持多种前端框架和静态网站生成器&#xff0…

STL 剖析

STL 六大组件 「STL 六大组件的交互关系」 Container 通过 Allocator 取得数据储存空间Algorithm 通过 Iterator 存取 Container 内容Functor 可以协助 Algorithm 完成不同的策略变化Adapter 可以修饰或套接 Functor、Iterator 配置器(allocator) 配置器:负责空间…

HTTP—03

触发 GET 请求 1)直接在浏览器 地址栏 输入 URL,此时构成了一个GET请求 2)HTML中的一些特殊标签可能会触发 例如 img,a,link,script... 3)通过Form表单触发(Form本质也是一个HTML标签) 4&#xff0…

C 数组:索引魔杖点化的数据星图阵列

一、数组 1.数组的概念 数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息: 数组中存放的是1个或者多个数据,但是数组元素个数不能为0。数组中存放的多个数据,类型是相同的。 2.数组的分类 数组主要分为一…

苹果手机怎么清理空间:拯救你的拥挤手机

在数字生活的海洋中,我们的苹果手机就像一艘小船,载满了照片、应用、视频和各种下载的“宝贝”。随着时间的推移,这艘小船开始变得拥挤,航行速度放缓,甚至有时候直接卡壳。苹果手机怎么清理空间?是时候学会…

Ubuntu上如何部署Nginx?

环境: Unbuntu 22.04 问题描述: Ubuntu上如何部署Nginx? 解决方案: 在Ubuntu上部署Nginx是一个相对简单的过程,以下是详细的步骤指南。我们将涵盖安装Nginx、启动服务、配置防火墙以及验证安装是否成功。 1. 更新…

javaScriptBOM

1.1、BOM概述 1.1.1、BOM简介 BOM(browser Object)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是window。 BOM由一系列的对象构成,并且每个对象都提供了很多方法与属性 BOM缺乏标准…

Unity3D仿星露谷物语开发7之事件创建动画

1、目标 掌握事件通知的Publisher - Subscriber设计模式,并通过事件通知触发动画。 2、发布者/订阅者模式 首先,定义事件Event 然后,Publisher触发事件 最后,Subscriber订阅事件并进行处理 (1)创建动作…

点击展示大图预览

原文链接在table表格里能够实现,点击里面的图片实现大图预览的效果; 一、先安装viewer — 使用npm安装 npm install v-viewer --save二、在main.js中引入 import Viewer from v-viewer //点击图片大图预览 import viewerjs/dist/viewer.css Vue.use(…

安全算法基础(一)

安全算法是算法的分支之一,还的依靠大量的数学基础进行计算,本文参照兜哥的AI安全样本对抗,做一个简单的算法安全概括,从零学习。 最新的安全算法对于我们常规的攻击样本检测,效果是不理想的,为了探究其原…

aioice里面candidate固定UDP端口测试

环境: aioice0.9.0 问题描述: aioice里面candidate固定UDP端口测试 解决方案: /miniconda3/envs/nerfstream/lib/python3.10/site-packages/aioice import hashlib import ipaddress import random from typing import Optional import…

UE UMG 多级弹出菜单踩坑

多级弹出菜单 https://www.bilibili.com/video/BV1ub411J7nA 运行时添加 widget 的方法 create widget 然后 add child 到某个组件,比如 canvas 运行时修改 widget 位置的方法 set widget slot position 用起来没效果 怀疑是因为我没有传入 slot 但是暂时不知…

金碟中间件-AAS-V10.0安装

金蝶中间件AAS-V10.0 AAS-V10.0安装 1.解压AAS-v10.0安装包 unzip AAS-V10.zip2.更新license.xml cd /root/ApusicAS/aas# 这里要将license复制到该路径 [rootvdb1 aas]# ls bin docs jmods lib modules templates config domains …

linux-----网络编程

网络编程基础概念 IP地址:是互联网协议地址,用于在网络中唯一标识一台设备。在IPv4中,地址是32位的二进制数,通常以点分十进制表示,如192.168.1.1。IPv6是128位的地址,用于提供更多的地址空间,格…

基于蓝牙通信的手机遥控智能灯(论文+源码)

1.系统设计 灯具作为人们日常生活的照明工具为人们生活提供光亮,本次基于蓝牙通信的手机遥控智能灯设计功能如下: (1)用户可以通过蓝牙通信模块的作用下,在手机端遥控切换智能灯不同的工作模式; &#x…