tomcatでcatalina.outログをカットする3つの方法の詳細な説明

tomcatでcatalina.outログをカットする3つの方法の詳細な説明

1. ログセグメンテーションのためのLog4j

1) log4j-1.2.17.jar、tomcat-juli.jar、tomcat-juli-adapters.jar の 3 つのパッケージを準備し、tomcat の lib ディレクトリまたはプロジェクトの WEB_INF/lib に配置します。

2) libディレクトリに新しいlog4j.propertiesファイルを作成し、次の内容を追加します。

log4j.rootLogger = INFO、CATALINA
 
# すべてのアペンダーを定義する
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# ログを1日1回ロールオーバーする
log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
 
log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost
log4j.appender.LOCALHOST.Append = true
log4j.appender.LOCALHOST.Encoding = UTF-8
log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
 
log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.MANAGER.File = ${catalina.base}/logs/manager
log4j.appender.MANAGER.Append = true
log4j.appender.MANAGER.Encoding = UTF-8
log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
 
log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender
log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager
log4j.appender.HOST-MANAGER.Append = true
log4j.appender.HOST-MANAGER.Encoding = UTF-8
log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
 
log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding = UTF-8
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
 
# どのロガーがどのアペンダーにログを記録するかを設定する
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO、LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\
 情報、マネージャー
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\
 情報、ホストマネージャー

3) tomcat ルート ディレクトリの conf フォルダーで、logging.properties ファイルを削除するか、名前を変更します。次に、context.xml ファイルを変更し、<Context> タグを <Context eatingOutput="true"> に変更して、Tomcat のログ出力を引き継ぎます。このようにして、log4j を使用したログの分割が完了します。

2. cronologを使用してログを分割する

Cronolog は、標準入力からログ ファイル エントリを読み取り、ファイル名テンプレートと現在のログ ファイルで指定された出力ファイルに各エントリを書き込むフィルター プログラムです。 ファイル拡張子が変更されると、現在のファイルは閉じられ、新しいファイルが開かれます。 Cronolog は、Apache などの Web サーバーで使用して、アクセス ログを日次ログまたは月次ログに分割するように設計されています。

# wget https://files.cnblogs.com/files/crazyzero/cronolog-1.6.2.tar.gz
# tar -zxf cronolog-1.6.2.tar.gz
# cd クロノログ
# ./configure 
# 作成 && インストール
# どのクロノログ
# /usr/local/sbin/cronolog

tomcat の bin/catalina.sh を編集します (注: 行数は私のものではないかもしれません。ステートメントを見つけてください)

上記の 2 つの内容を次の内容に置き換えます。

org.apache.catalina.startup.Bootstrap "$@" を開始\
2>&1 |/usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina-%Y-%m-%d.out" &

完了したら、Tomcat を再起動します。

3. logrotate を使用してカットします。

/etc/logrotate.d で、新しい tomcatrotate を作成し、tomatrotate を編集して、次の内容を記述します。

/usr/local/tomcat7.0.79/logs/catalina.out {
毎日
15回転
行方不明
日付テキスト
圧縮する
空でない
コピー切り捨て
}

daily はダンプサイクルを毎日指定します。
rotate 15 は、ログ ファイルが削除される前にローテーションされる回数を指定します。0 はバックアップなしを意味し、5 は 5 つのバックアップが保持されることを意味します。
missingok ログが存在しない場合は警告メッセージを無視してください
dateext のファイルサフィックスは日付形式です。つまり、切り取った後のファイルは xxx.log-20150828.gz になります。
圧縮 ダンプされたログをgzipで圧縮します(解凍するにはgzip -d xxx.gz)
notifempty ファイルが空の場合はダンプしません。

copytruncate は、まだ開いているログ ファイルのバックアップと現在のログの切り捨てに使用されます。

/usr/local/tomcat7.0.79/logs/catalina.out は catalina.out のパスを指定します

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

以下もご興味があるかもしれません:
  • TomcatはLog4jを使用してcatalina.outログを出力します。
  • Tomcatにcatalina.outが蓄積し続ける問題を解決する
  • Linux tomcat での Catalina.out ログ ファイルのセグメンテーション
  • Tomcat8はcronologを使用してCatalina.Outログを分割します

<<:  JS 正規マッチングの落とし穴の記録

>>:  2級コンピュータ試験のMySQL知識ポイント mysql alterコマンド

推薦する

Vueはミックスインを使用してコンポーネントを最適化します

目次ミックスインの実装フック関数のマージプロジェクト実践伸ばす要約するVue は mixins AP...

ユニアプリとミニプログラム(画像とテキスト)を下請けする方法を教えます

目次1. ミニプログラム下請け2. Uniapp 下請けアプレット下請けの手順: 1. manife...

git bash を使用して Linux にログインするための ssh の設定方法

1. まず、Linux サーバー上で公開鍵ファイルと秘密鍵ファイルを生成します。デフォルトの保存ディ...

クールなバーコードエフェクトの作り方を教えます

声明:この記事では、Web ページ制作技術を使用して問題を包括的に解決するという考え方を反映して、W...

MYSQL の 3 つのツリー構造テーブル設計の長所と短所の簡単な分析と共有

目次導入質問設計 1: 隣接リストテーブルデザインSQL の例デザイン 2: パスの列挙テーブルデザ...

MySQL インデックスの使用方法 (単一列インデックスと複数列インデックス)

1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...

Jenkins+Docker継続的インテグレーションの実装

目次1. Jenkinsの紹介2. Jenkinsをインストールしてデプロイする1. 環境情報2. ...

Bootstrap FileInputは画像アップロード機能を実装します

この記事の例では、Bootstrap FileInputの具体的なコードを共有して、画像アップロード...

Mysql systemctl start mysqld によって報告されるエラーの解決策

エラーメッセージ:制御プロセスがエラー コードで終了したため、mysqld.service のジョブ...

Webpack3+React16コード分割の実装

プロジェクトの背景最近、webpackのバージョンが古いプロジェクトがあります。 リーダー層では今の...

Centos7 に Nginx 統合 Lua サンプル コードをインストール

序文私が使用しているパソコンはMacで、OSはmacOS Mojaveです。コンピュータに仮想マシン...

Vueはカウントダウン機能を実装する

この記事の例では、カウントダウン機能を実装するためのVueの具体的なコードを参考までに共有しています...

HTML マルチメディア アプリケーション: Web ページにフラッシュ アニメーションと音楽を挿入する

1. HTML_falshアニメーションでのマルチメディアの応用(WebページへのFlashアニメー...

WeChatアプレットでグローバル変数を監視する方法

最近、仕事で問題に遭遇しました。グローバル変数 red_heart があります。これは多くの場所で使...

uniappのグローバル変数実装の詳細な説明

序文この記事では、uniapp グローバル変数の実装方法をいくつかまとめています。詳細な知識は、uV...