Nginx access logsは日付別に記録を保存します。

1494 ワード

ネットワークに伝わるnginx access logs分割は、shellスクリプトを書いてから、タイムタスクをしてログを分割します。操作は自由度が高く、正則で必要に応じてログを分割することができますが、日付ごとにログを保存したい場合は、以下の方法があります。
server
{
   ……
   #              
   if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
      set $date $1$2$3;
   }
   
   #       
   access_log  logs/$date.host.access.log;
}
 
 
マイサーバ nginx version:nginx/1.14.1試験方法は利用可能です。
詳細な日付変数の設定は、必要に応じて行います。
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})")
{
    set $year $1;
    set $month $2;
    set $day $3;
    set $hour $4;
    set $minutes $5;
    set $seconds $6;
}
Perlの捕獲方法もあるというが、本人は試したことがないので、興味のある方は試してみてください。
if ($time_iso8601 ~ "^(?\d{4})-(?\d{2})-(?\d{2})") {}

#       
access_log  logs/$year$month$day-host.access.log;
タイミングタスクに合わせてn日前のログを削除します。
まず.shスクリプトを作成します
cd ~
vi clearLogs.sh
コンテンツを追加
 #!/bin/bash

find /logs/ -mtime +10 -name "*.log" -exec rm -rf {} \;
説明:すべての10日前に「.logs」の付いたファイルを削除します。具体的なパラメータは以下の通りです。find:linuxの検索コマンドは、ユーザが指定された条件のファイルを検索します。logs/:整理したい任意のディレクトリ、-mtime:標準語句の書き方;+10:10日前の文書を検索します。ここでは日数を数字で表します。「*.log」:検索したいデータの種類、「*.jpg」はjpgという拡張子のすべてのファイルを検索することを表し、「*」はすべてのファイルを検索することを表しています。これは柔軟に使えます。exec:固定書き方;rm-rf:ディレクトリを含むファイルを強制的に削除します。{}\;:固定書き方は、大かっこのペア+スペース++;
#    
crontab -e

#        1       
00 01  * * * /root/clearLogs.sh