Nginx日志按天生成

一、介绍

Nginx是一款非常流行的Web服务器和反向代理服务器软件。默认情况下,Nginx将所有的访问日志记录到单个文件中。但是对于高流量的网站,可以把日志文件按天分割,方便管理和分析。

本文将会介绍如何使用Nginx按天生成日志文件,并且提供完整的配置代码样例。

二、按天生成日志文件

在Nginx的配置文件中,可以通过配置access_log指令来指定访问日志记录的文件路径和格式。可以使用$符号来定义文件名和格式中的变量,并且Nginx支持时间格式化函数。因此,我们可以通过在文件名中加入时间变量的方式来实现按天生成日志文件。

access_log  /var/log/nginx/access.log.$time_iso8601  main;

在上面的配置中,$time_iso8601变量表示当前时间的ISO 8601格式,如2021-09-01T21:30:00+00:00。因此,Nginx会自动在每个ISO 8601格式发生变化的时间点创建新的日志文件,并将对应的日志记录写入到新文件中。

三、自动清理旧日志文件

如果不对旧的日志文件进行清理,日志文件将会不断增长占用大量磁盘空间。为了避免这个问题,可以使用Linux系统自带的logrotate工具来自动清理日志文件。

logrotate是一个可以根据一定条件自动将旧日志文件归档和删除的工具。可以通过在配置文件中定义归档和删除的条件来控制logrotate的行为。下面是一个可以用来清理Nginx按天生成的日志文件的logrotate配置文件样例:

/var/log/nginx/access.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        /usr/sbin/service nginx reload > /dev/null
    endscript
}
  • daily:按日进行归档
  • missingok:如果日志文件不存在,则忽略错误
  • rotate 7:保留最近7个归档文件,并删除更早的文件
  • compress:使用gzip进行压缩
  • delaycompress:延迟压缩,下一次轮换时再压缩
  • notifempty:如果日志文件为空,则不进行轮换
  • create 0640 www-data adm:新创建的归档日志文件属性,属主为www-data,属组为adm,权限为rw-r—–
  • sharedscripts:轮换后只执行一次postrotate脚本
  • postrotate:轮换后要执行的命令。这里使用service命令重载Nginx配置

四、完整的配置文件样例

下面是一个完整的Nginx配置文件样例,用于按天生成日志文件并且使用logrotate对旧日志文件进行清理:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
    # ...
}

http {
    log_format main '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';
    access_log  /var/log/nginx/access.log.$time_iso8601  main;

    # ...
}

# logrotate配置文件
/var/log/nginx/access.log {
    daily
    missingok
    rotate 7
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        /usr/sbin/service nginx reload > /dev/null
    endscript
}

五、总结

本文介绍了如何使用Nginx按天生成日志文件,并且使用logrotate对旧日志文件进行清理。例如可以指定以ISO 8601格式进行文件名的配置,以及在logrotate配置文件中指定保留多少个日志文件和进行轮换的时间条件。以上方法可以帮助Nginx和服务器管理员更好地管理日志文件,方便后期的数据分析和故障排查。

原创文章,作者:TQJBC,如若转载,请注明出处:https://www.506064.com/n/370408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
TQJBCTQJBC
上一篇 2025-04-22 01:14
下一篇 2025-04-22 01:14

相关推荐

  • Cron执行日志用法介绍

    本文将从多个方面对cron执行日志进行详细阐述,包括cron执行日志的定义、cron执行日志的产生原因、cron执行日志的格式以及如何解读cron执行日志。 一、定义 Cron是一…

    编程 2025-04-29
  • Hibernate日志打印sql参数

    本文将从多个方面介绍如何在Hibernate中打印SQL参数。Hibernate作为一种ORM框架,可以通过打印SQL参数方便开发者调试和优化Hibernate应用。 一、通过配置…

    编程 2025-04-29
  • 使用Snare服务收集日志:完整教程

    本教程将介绍如何使用Snare服务收集Windows服务器上的日志,并将其发送到远程服务器进行集中管理。 一、安装和配置Snare 1、下载Snare安装程序并安装。 https:…

    编程 2025-04-29
  • Log4j日志打印到Systemout.log

    Log4j是Apache的一个强大的日志组件,可以帮助开发者更好地管理日志。在Java应用程序中,很多开发者都会选择使用Log4j来实现日志输出。本文将介绍如何使用Log4j将日志…

    编程 2025-04-28
  • Java如何从Nginx下载文件

    本文将从以下几个方面详细介绍如何使用Java从Nginx下载文件。 一、准备工作 在Java中下载文件需要使用到Apache HttpClient库,这个库是一个基于Java的HT…

    编程 2025-04-27
  • 如何将Linux系统日志发送到日志服务器

    本文将介绍如何将Linux系统日志发送到日志服务器,以方便管理和监控系统状态。 一、安装rsyslog软件包 rsyslog是Linux系统上默认的系统日志软件,用于收集系统事件和…

    编程 2025-04-27
  • SpringBoot如何设置不输出Info日志

    本篇文章将带您了解如何在SpringBoot项目中关闭Info级别日志输出。 一、为什么要关闭Info日志 在开发中,我们经常会使用Log4j、Logback等框架来输出日志信息,…

    编程 2025-04-27
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • NGINX权限被拒绝问题

    NGINX是一款常见的Web服务器软件,但是在使用中常会遇到“permission denied”权限被拒绝的问题。下文将从多个方面介绍本问题和解决方法。 一、系统权限问题 1、检…

    编程 2025-04-25
  • 关闭nginx命令详解

    一、linux系统中关闭nginx命令 1、使用ps命令找到nginx的进程ID $ ps -ef | grep nginx 2、发送信号给nginx进程结束 $ kill -QU…

    编程 2025-04-25

发表回复

登录后才能评论