Logrotate は 2 時間ごとに Catalina.out ログローテーションを実装します

Logrotate は 2 時間ごとに Catalina.out ログローテーションを実装します

1. Logrotateツールの紹介

Logrotate はログファイル管理ツールです。Linux にデフォルトで付属しているログカットツールです。古いファイルのローテーション、圧縮、削除、新しいログ ファイルの作成に使用されます。ログ ファイルの管理を容易にするために、ログ ファイルをサイズ、日数などに応じてダンプすることができます。これは通常、cron スケジュール タスクを通じて実行され、ログの切り取りを時間別、日別などに分割できます。

2. Logrotateの動作メカニズム

システムは logrotate を定期的に(通常は 1 日に 1 回)実行します。これがシステムが日常的に実装される方法です。 crontab は /etc/cron.daily ディレクトリ内のスクリプトを毎日定期的に実行しますが、このディレクトリには logrotate というファイルがあります。

[root@test01 ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

終了値=$?

[ $EXITVALUE != 0 ]の場合

  /usr/bin/logger -t logrotate "ALERT は [$EXITVALUE] で異常終了しました"
フィ
終了 0

実際に実行すると、Logrotateは設定ファイル/etc/logrotate.confを呼び出します。

3. Logrotateの構成

/usr/sbin/logrotate #プログラムの場所;

/etc/cron.daily/logrotate #デフォルトでは、Cron は 1 日に 1 回 logrotate を実行します。

/etc/logrotate.conf #グローバル設定ファイル;

/etc/logrotate.d/ # グローバル設定を上書きするには、独自の設定ファイル保存ディレクトリを使用します。

注意: logrotate.d はディレクトリです。このディレクトリ内のすべてのファイルは、実行時に自動的に /etc/logrotate.conf に読み込まれます。また、/etc/logrotate.d/ 内のファイルに詳細が設定されていない場合は、/etc/logrotate.conf ファイルの設定がデフォルト値として使用されます。

4. Logrotateコマンドの形式

logrotate [オプション...] <設定ファイル>
-d、--debug: デバッグ モード、構成ファイルのエラーをテストします。
-f, --force : ダンプ ファイルを強制します。
-m, --mail=command: ログを圧縮した後、指定されたメールボックスに送信します。
-s, --state=statefile : 指定された状態ファイルを使用します。
-v, --verbose : ダンププロセスを表示します。

たとえば、logrotate がログ ファイルのローテーションを実行するのを待たずに、ログ ファイルのローテーションを強制的に実行したいとします。

[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat #テスト用に使用します。注: CentOS7 コマンドは /usr/sbin/ にあります。

5. 共通設定パラメータの説明

Logrotate機能の実装で最も重要なことは、その構成パラメータです。

よく使用される構成パラメータは次のとおりです。

圧縮する

ローテーション後の古いログを参照する圧縮を有効にします。ここでは、デフォルトで gzip 圧縮が使用されます。

毎日

毎日のローテーション

日付テキスト

現在の日付を命名形式として使用する

日付形式 .%s

dateext とともに使用され、次の行にすぐに表示され、ファイルが切り取られた後のファイル名を定義します。dateext とともに使用する必要があります。%Y %m %d %s の 4 つのパラメータのみをサポートします。

空の場合

ログファイルが空であってもローテーションする

郵便

ローテーションしたファイルを指定された電子メールアドレスに送信する

コピー切り捨て

まだ開いているログ ファイルに使用されます。現在のログをバックアップして切り捨てます。この方法は、最初にコピーしてからクリアする方法です。コピーとクリアの間には時間差があり、一部のログ データが失われる可能性があります。

毎月

月に1回ローテーション

圧縮しない

logrotate.conf で圧縮が有効になっている場合、圧縮を無効にするパラメータは次のとおりです。

メールなし

いかなるアドレスにもメールを送信しないでください

空でない

ログが空の場合は回転しません(つまり、空のログはカットされません)。

olddir + ディレクトリ

ローテーションされたログ ファイルは指定されたディレクトリに配置され、現在のログ ファイルと同じファイル システムに存在する必要があります。

+ 回回転

前回のデータをローテーションで保持する最大回数。この回数を超えるデータは削除されるか、メールで送信されます。0 に設定すると、データは保存されません。

サイズ サイズ

ログが指定されたサイズに達すると、回転が始まります

毎週

現在の曜日が前回のローテーションの曜日よりも小さい場合、または 1 週間以上経過している場合は、ローテーションが行われます。ローテーションは通常、各週の最初の日に実行されます。logrotate が毎日実行されていない場合は、最初の機会にローテーションが行われます。

年間

現在の年が前回のローテーション年と異なる場合、ログはローテーションされます。

ミシンゴク

ログが失われた場合、エラーは報告されず、次のログがスクロールされます。

6. Logrotateをインストールして設定する

#yum インストール

[root@test01 ~]# yum -y logrotateをインストール

#マシンにはすでにTomcatがインストールされています。Tomcatログをカットするための構成ファイルを設定します。

[root@test01 ~]# vim /etc/logrotate.d/tomcat

注: logrotate の設定ファイルは /etc/logrotate.conf であり、通常は変更する必要はありません。

ログ ファイルのローテーション設定は、/etc/logrotate.d/ ディレクトリに配置されている個別の構成ファイルにあります。

[root@test01 ~]# mkdir -p /var/log/tomcat/oldlog

[root@test01 ~]# cat /etc/logrotate.d/tomcat

/usr/local/tomcat8/logs/catalina.out { # 切り取るログのパス。複数ある場合はスペースで区切ってください notifempty # ログが空の場合はローテーションされません (つまり、空のログは切り取られません)

  rotate 5000 #ローテーション中に最大 5000 回まで以前のデータを保持します missingok #ログが失われた場合、エラーを報告せずに次のログのローリングを続行します compressed #圧縮を有効にします。これは、ローテーション後の古いログを参照します。ここでのデフォルトの圧縮は gzip です dateext #現在の日付を命名形式として使用します dateformat .%Y%m%d-%H dot #dateext と一緒に使用します。次の行にすぐに表示され、ファイルが切り取られた後のファイル名を定義します。dateext と一緒に使用する必要があります。%Y %m %d %s のみをサポートします

  olddir /var/log/tomcat/oldlog #ローテーション後のログファイルは指定されたディレクトリに配置されます}

注: この設定では、どのくらいの頻度でカットするかは設定していませんが、1 日に 1 回カットされます。これは、/etc/logrotate.d/tomcat ファイルが設定されていない場合、デフォルトでは /etc/cron.daily/logrotate ファイルが毎日実行され、このファイルが 1 日に 1 回カットされるためです。

#強制的にカットを実行し、/var/log/tomcat/oldlogにログがあるかどうかを確認します

[root@test01 ~]# /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat

設定ファイル /etc/logrotate.d/tomcat を読み取り中

olddir は /var/log/tomcat/oldlog になりました

状態ファイル用のハッシュ テーブルを割り当てています。サイズは 15360 B です。

1 ログの処理

ローテーションパターン: コマンドラインから強制された /usr/local/tomcat8/logs/catalina.out (5000 ローテーション)

olddir は /var/log/tomcat/oldlog です。空のログファイルはローテーションされず、古いログは削除されます。

ログ /usr/local/tomcat8/logs/catalina.out を考慮する

 ログを回転させる必要がある

ローテーションログ /usr/local/tomcat8/logs/catalina.out、log->rotateCount は 5000 です

'.%Y%m%d-%H点' -> '.%Y%m%d-%H点' に変換されました

日付拡張子サフィックス '.20181226-15'

グロブパターン '.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9]ドット'

古いローテーションログを見つける glob が失敗しました

fscreate コンテキストが unconfined_u:object_r:usr_t:s0 に設定されました

/usr/local/tomcat8/logs/catalina.out の名前を /var/log/tomcat/oldlog/catalina.out.20181226-15:00 に変更し、ログを /bin/gzip で圧縮します。

デフォルトの作成コンテキストを unconfined_u:object_r:usr_t:s0 に設定する

デフォルトの作成コンテキストを設定する

# カット結果を見る

# 以前に切り取ったファイルを削除します。再度切り取ると、ファイルは catalina.out.20181226-15.gz ファイルと同じになるため、切り取りは成功しません。

[root@test01 ~]# rm -rf /var/log/tomcat/oldlog/catalina.out.20181226-15点.gz 
[root@test01 ~]# ls /var/log/tomcat/oldlog/
[root@test01 ~]#

# 1 分ごとに切り取るスケジュールされたタスクを設定します (注: 前に定義した空のログ ファイルは切り取られないため、ログにはコンテンツが含まれている必要があります)

[root@test01 ~]# crontab –e
*/1 * * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >>/var/log/tomcat/oldlog/cutting.log

# 2時間ごとにカット

[root@test02 ~]# crontab -l
0 */2 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat >> /root/chenjiaxin/cutting.log

#タイムドカットの結果を見る

もちろん、1分に1回カットするという上記の設定は、実験によりできるだけ早く効果を確認できるようにするためです。実際には、会社のニーズに応じて丸太を切る頻度を設定する必要があります。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linuxはlogrotateを使用してログファイルを切り取る
  • Tomcat ログローテーション (logrotate) の詳細な紹介
  • Linux での logrotate ログポーリング操作の概要

<<:  mysql 解凍パッケージの基本インストールチュートリアル

>>:  Alibaba Cloud で MySQL リモート接続を構成するための詳細な手順

推薦する

React の国際化 react-intl の使用

React で国際化を実現するにはどうすればよいでしょうか? react-intlプラグインは、Re...

KVM 仮想マシンのオンライン ホット マイグレーションを実装する方法 (画像とテキスト)

1. KVM仮想マシンの移行方法と注意すべき点KVM 仮想マシンを移行する方法は 2 つあります。...

MySQL データベースの最適化: インデックスの実装原則と使用状況の分析

この記事では、例を使用して、MySQL データベースの最適化のためのインデックス実装の原則と使用方法...

JavaScript の新しい要素トラバーサルプロパティを使用して子要素をトラバースする方法を学びます

目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...

MySQL 5.7.18のインストール方法とMySQLサービスの起動手順の詳細な説明

MySQL は非常に強力なリレーショナル データベースです。しかし、初心者の中には、インストールや設...

ユーザーがフォームを繰り返し送信するのを防ぐ方法の概要

重複したフォーム送信は、マルチユーザー Web アプリケーションで最も一般的で厄介な問題です。重複送...

Nginx を使用して https ルートドメイン名への 301 リダイレクトを実装するためのサンプル コード

SEO とセキュリティを考慮して、301 リダイレクトが必要です。以下の一般的な処理には Nginx...

MySQL 構成マスタースレーブサーバー (マスター 1 台とスレーブ複数台)

目次アイデアホスト構成confを変更する再起動テストスレーブ 1 の構成スレーブ2の構成マスターとス...

ドラッグ効果を実現するための js オブジェクト指向メソッド

この記事では、ドラッグアンドドロップをJSオブジェクト指向で実装するための具体的なコードを参考までに...

データベースを削除せずにMySQLのすべてのテーブルを素早く削除する方法

この記事では、例を使用して、データベースを削除せずに MySQL 内のすべてのテーブルをすばやく削除...

Vueは動的クエリルール生成コンポーネントを実装します

1. 動的クエリルール動的クエリルールは、おおよそ次の図のようになります。ユーザのカスタマイズに応じ...

JSはクリックドロップ効果を実装します

jsはクリックとドロップの特殊効果を実現します。まずは効果画像を見てみましょうさっそく始めましょう。...

mysql エラー 1033 を解決する方法: ファイル内の情報が正しくありません: 'xxx.frm'

問題の説明1. 収集ステーションのデータベース2. データが無い状態での移動は問題ありませんが、デー...

MySQLの不合理なMaxIdleConnsにより接続が短くなる

1 背景最近、Shimo Document のオンライン ビジネスでパフォーマンスの問題が発生しまし...

Dockerfileを使用してApacheイメージを作成する方法

目次1. Dockerイメージ2. 既存のイメージに基づいてインスタンスを作成する3. ローカルテン...