nginxでログカットを行う方法
高洛峰
高洛峰 2017-05-16 17:29:36
0
5
615

Nginx ログはファイルに書き込まれます。毎日 1 つの Nginx ログが必要です
インターネット上で多くの方法を見ましたが、いずれもスクリプトを作成し、ログ ファイルを固定形式で切り出すというものでした。 Nginx は単独でログカットを行うことはできませんか?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(5)
phpcn_u1582

cron が実行されていることを確認します

リーリー

設定ファイルを変更する

リーリー

スケジュールされたタスクを確認する

リーリー

logrotate 設定ファイルを /etc/logrotate.d/nginx に書き込みます

リーリー

テスト構成

リーリー
いいねを押す +0
刘奇

システム管理者のロギングのニーズは常に変化しています。Nginx は軽量であるため、ログ管理についてはまったく心配しません。

公式 LogRotation Wiki ページ

あなたも見つけたと思いますが、独自のスクリプトまたは logrotate を使用できます。

いいねを押す +0
我想大声告诉你

nginx ログ ファイルには回転機能がありません。これを処理しないと、ログ ファイルはどんどん大きくなっていきますが、幸いなことに、ログ ファイルを自動的にカットする nginx ログ カット スクリプトを作成できます。

最初のステップは、ログ ファイルの名前を変更することです。名前を変更した後に nginx がログ ファイルを見つけられず、ログが失われることを心配する必要はありません。元の名前でログ ファイルを再度開く前に、nginx はファイル名ではなくファイル記述子に基づいてファイルを見つけます。

2 番目のステップは、USR1 シグナルを nginx メインプロセスに送信することです。

シグナルを受信した後、nginx のメインプロセスは設定ファイルからログファイル名を読み取り、ログファイル (設定ファイル内のログ名で名前が付けられている) を再度開き、ワーカープロセスのユーザーを所有者として使用します。ログファイル。

ログ ファイルを再度開いた後、nginx メイン プロセスは同じ名前のログ ファイルを閉じ、新しく開いたログ ファイルを使用するようにワーカー プロセスに通知します。

ワーカー プロセスはすぐに新しいログ ファイルを開き、同じ名前のログ ファイルを閉じます。

その後、古いログファイルを処理できます。

nginxログの日付別自動切り出しスクリプトは以下の通りです

  • nginxログカットスクリプト
  • 作者: http://www.nginx.cn
  • !/bin/bash
  • ログファイルの保存ディレクトリを設定します

logs_path="/usr/local/nginx/logs/"

  • pidファイルを設定する

pid_path="/usr/local/nginx/nginx.pid"

  • ログファイルの名前を変更します

mv ${logs_path}access.log ${logs_path}access_$(date -d "昨日" +"%Y%m%d").log

  • ログを再度開くようにnginxメインプロセスに信号を送ります

USR1を殺すcat ${pid_path}

上記のスクリプト nginx_log.sh を保存するか、ここをクリックしてダウンロードします

crontabセットアップジョブ

0 0 * * * bash /usr/local/nginx/nginx_log.sh
これにより、nginx ログの名前が毎日 0:00 の日付形式に変更され、今日の新しいログ ファイルが再生成されます。

詳細なソース参照: http://www.nginx.cn/255.html

いいねを押す +0
世界只因有你

最も簡単な方法は、設定ファイルで直接設定することです:

リーリー
いいねを押す +0
Peter_Zhu

このメソッドは日付のないファイルを生成することが多いため、廃止されました

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート