Nginx access logsは日付別に記録を保存します。
1494 ワード
ネットワークに伝わるnginx access logs分割は、shellスクリプトを書いてから、タイムタスクをしてログを分割します。操作は自由度が高く、正則で必要に応じてログを分割することができますが、日付ごとにログを保存したい場合は、以下の方法があります。
マイサーバ nginx version:nginx/1.14.1試験方法は利用可能です。
詳細な日付変数の設定は、必要に応じて行います。
まず.shスクリプトを作成します
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