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/zh-hk/n/370408.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TQJBC的頭像TQJBC
上一篇 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

發表回復

登錄後才能評論