linux系统nginx工具的日志配置

日志配置

      • 日志介绍
      • log_format 指令
      • error_log 指令
        • 配置段:main, http, mail, stream, server, location作用域
      • open_log_file_cache 指令
        • 配置段:http、server、location作用域中。
      • log_not_found 指令
      • log_subrequest指令
      • rewrite_log指令
      • 日志配置

日志介绍

nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的支持,日志格式通过 log_format 命令来定义,日志对于统计和排错是非常有利的

# 设置访问日志
access_log path [format [buffer=size] [gzip[=level]] [flush=time][if=condition]];# 关闭访问日志
access_log off;
path:指定日志的存放位置。
format:指定日志的格式。默认使用预定义的combined。
buffer:用来指定日志写入时的缓存大小。默认是64k。
gzip:日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。
flush:设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。
if:条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。
作用域:可以应用access_log指令的作用域分别有http,server,location,limit_except。

log_format 指令

Nginx预定义了名为combined日志格式,如果没有明确指定日志格式默认使用该格式:log_format combined '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent"';
如果不想使用Nginx预定义的格式,可以通过log_format指令来自定义语法:log_format name [escape=default|json] string ...;name 格式名称。在access_log指令中引用。
escape 设置变量中的字符编码方式是json还是default,默认是default。
string 要定义的日志格式内容。该参数可以有多个。参数中可以使用Nginx变量。
log_format指令中常用的一些变量:$remote_addr   远程地址:记录客户端ip
$remote_user   远程客户:记录客户端用户名称
[$time_local]  本地时间:服务器自身时间  
$request       请求:记录请求的URL和HTTP协议
$status   	   状态:记录请求状态   200正确  404服务器找不到请求网页503服务器目前无法使用100请求者应当继续提出请求301请求的网页已永久移动到新位置
$body_bytes_sent    发送给客户端的字节数,不包括影响头的大小
$http_referer       引用:记录从那个页面链接访问过来的(超链接)
$http_user_agent    记录客户端浏览器相关信息,用户访问服务器的代理
$http_x_forwarded_for    代理缓存服务器,代理ip
我们看到最终的日志记录中$remote_user、$http_referer、$http_x_forwarded_for都对应了一个-,这是因为这几个变量为空。

error_log 指令

错误日志在Nginx中是通过error_log指令实现的。该指令记录服务器和请求处理过程中的错误信息

配置段:main, http, mail, stream, server, location作用域
语法:
配置错误日志文件的路径和日志级别
error_log file [level];
Default: error_log logs/error.log error;          //默认分错误日志定义方式file参数指定日志的写入位置level参数指定日志的级别
level可以是debug, info, notice, warn, error, crit, alert,emerg中的任意值。
可以看到其取值范围是按紧急程度从低到高排列的。只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error。
例如:error_log /var/logs/nginx/nginx-error.log
翻译:错误日志的路径为:/var/logs/nginx/nginx-error.log,日志级别使用默认的error。

open_log_file_cache 指令

每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果你的日志文件路径中使用了变量,为提高性能,可以使用open_log_file_cache指令设置日志文件描述符的缓存。

配置段:http、server、location作用域中。
语法
open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];默认值:open_log_file_cache off;
max设置缓存中最多容纳的文件描述符数量,如果被占满,采用LRU算法将描述符关闭。
inactive设置缓存存活时间,默认是10s。
min_uses在inactive时间段内,日志文件最少使用几次,该日志文件描述符记入缓存,默认是1次。
valid:设置多久对日志文件名进行检查,看是否发生变化,默认是60s。
off:不使用缓存。默认为off。
例如:open_log_file_cache max=1000 inactive=20s valid=1m min_uses=3;
总结:缓存最多1000个,到了极限,每分钟开始清除掉20秒内小于3次的文件FDFD:文件描述符

log_not_found 指令

是否在error_log中记录不存在的错误(404)。默认是记录

语法
log_not_found on | off;默认值:log_not_found on;

log_subrequest指令

是否在access_log中记录子请求的访问日志。默认不记录

语法
log_subrequest on | off;默认值:log_subrequest off;

rewrite_log指令

由ngx_http_rewrite_module模块提供的。用来记录重写日志的。对于调试重写规则建议开启,启用时将在error log中记录notice级别的重写日志

语法:
rewrite_log on | off;默认值:rewrite_log off;

日志配置

Nginx中通过access_log和error_log指令配置访问日志和错误日志,通过log_format可以自定义日志格式。如果日志文件路径中使用了变量,可以通过open_log_file_cache指令来设置缓存,提升性能。其他的根据使用场景定义。

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

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

相关文章

NVIDIA jetson编译opencv 源码 python版本

安装 jetson-stats 查看GPU的利用率 sudo apt-get install python3-pip sudo -H pip3 install jetson-stats 运行 jtop 进行查看 opencv 编译python版本 编译命令 cmake -D CMAKE_INSTALL_PREFIX/usr/local/opencv-4.6.0 -D CMAKE_BUILD_TYPERELEASE -D WITH_OPENGLON -D …

python爬虫如何写,有哪些成功爬取的案例

编写Python爬虫时,常用的库包括Requests、Beautiful Soup和Scrapy。以下是三个简单的Python爬虫案例,分别使用Requests和Beautiful Soup,以及Scrapy。 1. 使用Requests和Beautiful Soup爬取网页内容: import requests from bs4 …

24校招,江淮汽车软件测试工程师技术面+HR面

前言 记录一下楼主的面试经历,希望对后来者有用 时间:15min 平台:腾讯会议 过程 技术面试 自我介绍 为啥不考研 实习收获 你有做过软件开发的工作吗? 除了Java和Python,还会其他的语言吗? 学过C吗…

2.4 网络层01

2.4 网络层01 2.4.1 网络层概述 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。 异构网络内部的计算机要想实现通信是不需要实现网络互联的,异构网络之间要想实现通信就必须实现网络互连。 路由器工作在五层协议体系结构的网络…

Kafka-消费者-KafkaConsumer分析

与KafkaProducer不同的是,KafkaConsumer不是一个线程安全的类。 为了便于分析,我们认为下面介绍的所有操作都是在同一线程中完成的,所以不需要考虑锁的问题。 这种设计将实现多线程处理消息的逻辑转移到了调用KafkaConsumer的代码中&#x…

美易官方:欧央行夏季降息预期市场反应

近日,欧洲央行行长拉加德在接受媒体采访时表示,欧洲央行官员可能已经达成在夏季降息的共识。这一消息在金融市场引起了广泛关注,投资者纷纷解读其对未来货币政策的影响。然而,拉加德同时指出激进降息押注无助于抗击通胀&#xff0…

目标检测YOLO实战应用案例100讲-橘子自动采摘机视觉识别

目录 前言 卷积神经网络相关理论基础 2.1传统神经网络模型 2.2卷积神经网络结构

UML-顺序图

提示:用例图从参与者的角度出发,描述了系统的需求(用例图);静态图定义系统中的类和对象间的静态关系(类图、对象图和包图);状态机模型描述系统元素的行为和状态变化流程(…

QT上位机开发(不同场景下界面的设计模板)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 qt由于其优秀的跨平台属性,几乎成了嵌入式开发界面开发的标配。同时呢,由于它在windows平台开发出来的效果也是非常的好&am…

K3S+Rancher

1.查看系统版本,架构等情况便于后续采用对应的安装包以及命令 查看系统版本 uname -a 查看系统命令集 uname -m 这是我系统配置情况 服务器清单 名称IP配置系统主-服务192.168.23.1714Cpu8GUbuntu 20.04.6副主-服务192.168.23.1034Cpu8GUbuntu 20.04.6代理-服务…

微信小程序+前后端开发学习材料2-(视图+基本内容+表单组件)

学习来源 视图 1.swiper 滑块视图容器。其中只可放置swiper-item组件,否则会导致未定义的行为。 显示面板指示点indicator-dots 基础内容 1.icon 图标组件 实例演示 2.progress 进度条。组件属性的长度单位默认为px,咱用rpx。 实例演示 这…

【运维】WSL1如何升级到WSL2

升级WSL1到WSL2:简便快捷版 在这篇博客中,我们将研究如何通过一种更简便的方式,将WSL1迅速升级到WSL2,避免官方文档的繁冗步骤。如果你觉得官方方法太过冗长,那么这里提供的步骤可能更适合你。 官网的办法是&#xf…

oracle 19c容器数据库data dump数据泵传输数据(4)---网络传输

Transporting a Database Over the Network: Example 这个的方式导入可以不需要传输dmp文件,我原本是想从11g导入到pdb2的,但是因为版本的原因,就直接实验从pdb1导入到pdb2吧。 这种方式和前面完全传输的方式类似,不需要事先在目…

如何解决分支机构无法连入总部采购管理系统的难题

案例背景: 某企业业务规模不断壮大,内部采购流程越发复杂,供应商资质情况各异难以管理,为提高内部采购效率和采购品质,优化供应链管理,确保采购环节公正透明可溯,该企业集中化部署了采购管理系…

k8s 集群搭建的一些坑

k8s集群部署的时候会遇到很多的坑,即使看网上的文档也可能遇到各种的坑。 安装准备 1、虚拟机两台(ip按自己的网络环境相应配置)(master/node) 192.168.100.215 k8s-master 192.168.100.216 k8s-node1 2、关闭防火墙(master/node) system…

AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(八)

16.什么是webpack? 压缩:把代码文件的体积缩小 整合:把多个CSS文件、JS文件整合成一个,减少用户浏览器的http请求次数,从而让用户更快访问我们的网页 转译:less、sass转换成css,高版本js降级处理等 时间…

LUA 对象转excel

1. 首先把LUA 转成JSON 对象 因为是excel, 所以第一层要是数组,否则没有什么意义,即lua对象要是一个数组比较合理。这里使用开源的json.lua, 但是开源的,对于数字作下标的,或者是一个数组里,不同类型的key…

Tomcat启动后无法访问主页

1、确认JDK和Tomcat环境变量配置没有问题后&#xff0c;startup启动Tomcat 2、输入localhost:8080显示无法访问 3、找到Tomcat安装目录下的conf目录 4、修改下面两个地方&#xff0c;将port改成8081 <Connector port"8081" protocol"HTTP/1.1"connect…

vue3 实现简单计数器示例——一个html文件展示vue3的效果

目的&#xff1a;作为一个新手开发&#xff0c;我想使用 Vue 3 将代码封装在 HTML 文件中时&#xff0c;进行界面打开展示。 一、vue计数示例 学了一个简单计数器界面展示&#xff0c;代码如下&#xff1a; <!DOCTYPE html> <html lang"en"><head&…

会话层协议

在OSI模型中&#xff0c;会话层&#xff08;Session Layer&#xff09;主要负责建立、管理和终止会话&#xff0c;提供数据交换的服务。然而&#xff0c;相对于物理层、数据链路层、网络层、运输层等层&#xff0c;会话层的协议并没有像其他层次那样具有明确的、广泛应用的协议…