首页 > 系统相关 >12、nginx日志配置

12、nginx日志配置

时间:2024-01-15 17:56:12浏览次数:28  
标签:文件 12 log format access nginx 日志 logs

1.nginx日志指令

  • log_format: 用于设置日志格式
  • access_log: 用于指定日志文件存放路径、格式、缓存大小

可设置在http、server块中

2.log_format

2.1 log_format语法

log_format name format [format ...]

name表示定义的格式名称
format 表示定义的格式样式。

  • log_format 有一个默认的、无须设置的combined日志格式设置,相当于Apache的combined 日志格式,其具体参数如下:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http user_agent"';

2.2 access_log语法

access_log path [format [buffer=size | off]]

path 表示日志文件的存放路径
format 表示使用 log_format 指设置的日志格式的名称
buffer=size表示设置内存缓冲区的大小,例如可以设置 buffer=32k。

  • 如果不想记录日志,可以使用以下指令关闭日志记录:
access_log off;
  • 如果想使用默认的 combined 格式的日志记录,可以使用以下示例:
access_log /data1/logs/filename.1og;
access_log /data1/logs/filename.log combined;
  • 如果想使用自定义格式的日志记录,可以使用以下示例,其中的 mylogformat 是日志格式名称:
log_format mylogformat '$remote_addr - $remote_user [$time_local]  "$request" '
                        '$status $body_bytes_sent" $http_referer"'
                        '"$http_user_agent" $http_x_forwarded_for';
access_log /datal/logs/access.log mylogformat buffer=32k;
  • Nginx 0.7.4之后的版本中,access_log 指令中的日志文件路径可以包含变量,例如:
access_log /data1/logs/$server_name.log combined;

假设 server_name 指令设置的虚拟主机名称为 test.domain.com,那么access_log 指令将把访问日志记录在/datal/logs/test.domain.com.log 文件中

如果日志文件路径中含有变量,将存在以下一些限制:

  1. Nginx 进程设置的用户和组必须有对该路径创建文件的权限。假设 Nginx 的 user 指令设置的用户名和用户组都是 www,而/datal/logs/目录的用户名和用户组为 root,日志文件/datal/logs/test.domain.com.log 将无法被 Nginx 创建;

  2. 缓冲将不会被使用;

  3. 对于每一条日志记录,日志文件都将先打开文件,再写入日志记录,然后马上关闭。为了提高包含变量的日志文件存放路径的性能,须要使用 open_log _file_cache 指令设置经常被使用的日志文件描述符缓存

open_log_file_cache 指令主要用来设置含有变量的日志路径的文件描述符缓存,它的语法如下:

open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time] | off 
# 该指令默认是禁止的,等同于:
open_logfile_cache off;

open_log_file_cache 指令的各项参数说明如下:

  • max: 设置缓存中的最大文件描述符数量。如果超过设置的最大文件描述符数量则采用LRU(Least Recently Used)算法清除“较不常使用的文件描述符”。LRU (Least Recently Used)算法的基本概念是:当内存缓冲区剩余的可用空间不够时,缓冲区尽可能地先保留使用者最常使用的数据,将最近未使用的数据移出内存,腾出空间来加载另外的数据。
  • inactive: 设置一个时间,如果在设置的时间内没有使用此文件描述符,则自动删除此描述符此参数为可选参数,默认的时间为 10 秒钟。
  • min_uses:在参数 inactive 指定的时间范围内,如果日志文件超过被使用的次数,则将该日志文件的描述符记入缓存。默认次数为 1。
  • valid:设置多长时间检查一次,看一看变量指定的日志文件路径与文件名是否仍然存在。默认时间为60秒
  • off:禁止使用缓存
  • open_log_file_cache 指令的设置示例如下 open_log_file_cache max=1000 inactive=20s minuses=2 valid=1m;

3.nginx日志切割

便携 cron脚本

#!/bin/bash
#这个脚本须在每天的00:00运行

#Nginx日志文件的存放路径
logspath="/data1/logs/

mkdir -p $(logs_path)$(date -d "yesterday" + "%Y")/$(date -d "yesterday" + "%m")/ 
mv $(logs_path)access.log $(logs_path)$(date -d "yesterday" + "%Y")/$(date -d "yesterday" + "%m")/access_$(date -d "yesterday" + "%Y%m%d").log
kill -USR1 `cat /usr/local/webserver/nginx/nginx.pid`

另外,配置crontab每天凌晨00:00定时执行这个脚本 crontab -e

00 00 * * * /bin/bash /usr/local/webserver/nginx/sbin/cutnginxlog.sh

标签:文件,12,log,format,access,nginx,日志,logs
From: https://www.cnblogs.com/ccblblog/p/17965816

相关文章

  • Threat Simulator (威胁仿真器) 23.12.2 - 入侵与攻击仿真(BAS)平台
    ThreatSimulator(威胁仿真器)23.12.2-入侵与攻击仿真(BAS)平台连续验证您的安全态势,有效抵御最新威胁请访问原文链接:ThreatSimulator(威胁仿真器)23.12.2-入侵与攻击仿真(BAS)平台,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgThreatSimulator威胁仿真器......
  • python logging 禁止日志输出
    1只会禁用特定日志记录器,其他日志记录器仍可以将消息输出到控制台格式:logging.getLogger("某日志记录器").disabled=True例:logging.getLogger("tornado").disabled=True2阻止这些日志记录器将日志消息传播到更高级别的父级记录器,从而不会显示在控制台上;请注意,其他日志......
  • nginx配置虚拟主机机
    1.配置文件#设置进程数worker_processes4;#设置启动用户,一般情况下设置为当前用户,要不然会出现权限不足userroot;events{worker_connections1024;}http{#设置虚拟主机1server{listen8001;server_name172.16.122.177;......
  • 刚上线三天,OpenAI GPT 商店的「AI 女友」就已泛滥丨 RTE 开发者日报 Vol.126
      开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编辑......
  • 网络-华为、思科交换机配置TFTP自动备份、NTP时间同步、SYSLOG日志同步
    配置使用TFTP进行交换机配置的自动保存华为设备<Huawei-sw>sys[Huawei-sw]setsave-configurationinterval60delay3cpu-limit60[Huawei-sw]setsave-configurationbackup-to-serverserver<TFTP服务器IP>transport-typetftppath\Huawei-sw.zip[Huawei-sw]quit<H......
  • tornado 日志
    一、几个方法log.enable_pretty_logging()log.app_log.setLevel(log.logging.INFO)log.gen_log.setLevel(log.logging.ERROR)  解释:log.enable_pretty_logging() #改善日志的显示格式,使其更易读和美观的方式显示在控制台上。没有调用该函数,日志仍然会显示在控制台上,但......
  • 使用HTTP/2在Linux上的Nginx服务器进行优化
    随着互联网的发展,HTTP/2协议逐渐成为主流。与传统的HTTP/1.1相比,HTTP/2提供了更高的传输效率和更好的安全性。在Linux上使用Nginx服务器进行优化,我们可以充分利用HTTP/2的优势,提高网站的性能和用户体验。安装Nginx并启用HTTP/2首先,确保你的Nginx服务器已经安装并正常运行。要启用H......
  • 在Linux上使用PHP-FPM与Nginx实现高效的HTTP处理
    当谈到高效的HTTP处理时,PHP-FPM(FastCGI进程管理器)与Nginx的结合是许多web开发者的首选。这种组合提供了出色的性能、可扩展性和稳定性,尤其适用于高流量的网站和应用程序。1.为什么选择PHP-FPM与Nginx?· 性能优化:PHP-FPM通过进程管理和缓存机制,显著提高了PHP脚本的执行效率。· ......
  • 管道通信(下)命名管道的使用实现简单的日志函数
     我们之前学习到的管道是没有名字的正因为没有没有名字所以最后选择的是让子进程继承父进程的方式来达到让父子进程看到同一份资源的方式。这也也就导致了匿名管道只能在具有血缘关系的进程进行进程间通信。但是我们需要进行进程间通信的场景并不是只有这一种的?如果是毫不相关的进......
  • 视频数据卡设计方案:120-基于PCIe的视频数据卡
    一、产品概述   基于PCIe的一款视频数据收发卡,并通过PCIe传输到存储计算服务器,实现信号的采集、分析、模拟输出,存储。    产品固化FPGA逻辑,实现PCIe的连续采集,单次采集容量2GB,开源的PCIe QT客户端软件,用户可以在很短的时间内完成采集器程序的开发,如连续信号采集......