TomcatはLog4jを使用してcatalina.outログを出力します。

TomcatはLog4jを使用してcatalina.outログを出力します。

Tomcat のデフォルトのログは java.util.logging を使用しますが、これにはいくつかの欠点があります。ファイル catalian.out は log4j のように毎日生成することができず、どんどん大きくなってしまいます。ログ形式は、プロジェクト内の log4j によって出力される形式と一致しておらず、解析に適していません。

Tomcatの公式サイト(https://tomcat.apache.org/tomcat-7.0-doc/logging.html)で検索したところ、いくつかの設定を変更し、拡張パッケージを置き換えることで、log4jを使用してcatalian.outを出力できることがわかりました。

$CATALINA_BASE/libにlog4j.propertiesファイルを作成します。

log4j.properties の内容は次のとおりです。

log4j.rootLogger = INFO、CATALINA
# すべてのアペンダーを定義する
log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender
log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina.out
log4j.appender.CATALINA.Append = true
log4j.appender.CATALINA.Encoding = UTF-8
# ログを1日1回ロールオーバーする
log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd
log4j.appender.CATALINA.layout = org.apache.log4j.PatternLayout
#log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CATALINA.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss.SSS} %p [%t] %c | %m%n
# catalina.out にカスタムログを設定します
log4j.logger.com.xxxxx = 警告、カタリナ
log4j.logger.org.apache = 警告、CATALINA
log4j.logger.org.mybatis = 警告、CATALINA
log4j.logger.java.sql = 警告、CATALINA
log4j.logger.org.springframework = 警告、CATALINA

tomcat関連のjarパッケージを更新する

log4j-1.2.17.jar をダウンロードします (http://www.apache.org/dist/logging/log4j/1.2.17/)

tomcat7 の 2 つの jar パッケージ (tomcat-juli.jar と tomcat-juli-adapters.jar) をダウンロードします (http://www.apache.org/dist/tomcat/tomcat-7/v7.0.69/bin/extras/、Tomcat のバージョンに対応するものが望ましい)

log4j-1.2.17.jar と tomcat-juli-adapters.jar を $CATALINA_HOME/lib に配置し、$CATALINA_HOME/bin/tomcat-juli.jar を新しくダウンロードした tomcat-juli.jar に置き換えます。

$CATALINA_BASE/conf/logging.propertiesを削除します。

Tomcatを再起動します

デフォルトの Catalina ログ形式について

Tomcat のデフォルトのログ形式のみを変更する場合は、デフォルトのjava.util.logging.SimpleFormatterを置き換えるだけです。 SimpleFormatter クラスの形式はLoggingSupport.getSimpleFormat()であり、その具体的な値は「%1$tb %1$td, %1$tY %1$tl:%1$tM:%1$tS %1$Tp %2$s%n%4$s: %5$s%6$s%n」です。ここで、時間形式は予想どおりではない可能性があり、改行 %n が含まれています。例えば、上記の log4j と同様の時間形式に変更したい場合は、置換クラス (com.xxx.LogFormatter) を自分で書き換えて、形式を「%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS.%1$tL %4$s %2$s %5$s%6$s%n」に設定することができます。 $CATALINA_BASE/conf/logging.properties を変更する

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

次のように変更します。

java.util.logging.ConsoleHandler.formatter = com.xxx.LogFormatter
org.apache.juli.FileHandler.formatter = com.xxx.LogFormatter

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • tomcatでcatalina.outログをカットする3つの方法の詳細な説明
  • Tomcatにcatalina.outが蓄積し続ける問題を解決する
  • Linux tomcat での Catalina.out ログ ファイルのセグメンテーション
  • Tomcat8はcronologを使用してCatalina.Outログを分割します

<<:  MySQL、Oracle、SQL Server のページングクエリ例の分析

>>:  CocosCreator で物理エンジン ジョイントを使用する方法

推薦する

このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了します (推奨)

朝早くに電話で起こされました。あるプロジェクトのデータベースがダウンしていて起動できないとのことでし...

win10でのmysql5.7.21解凍バージョンのインストールチュートリアル

次のように、Win10でMysqlの解凍バージョンをインストールします。環境: win10 64ビッ...

Vue で AES.js を使用する詳細な手順

AES暗号化の使用データ転送の暗号化と復号化処理 --- AES.js最初のステップ: vue に ...

Vue モバイル プロジェクトでページ キャッシュを実装する方法のサンプル コード

背景モバイル デバイスでは、ページ ジャンプ間のキャッシュが必須要件です。例: ホームページ =&g...

MySQLデータベースはMMM高可用性クラスタアーキテクチャを実装します

コンセプトMMM (Mysql のマスター マスター レプリケーション マネージャー) は、Perl...

Vueは買い物数量を変更できるショッピングカートを実装します

この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...

VMware に Centos8 をインストールする詳細なチュートリアル

CentOS公式サイトアドレスhttps://www.centos.org/まず必要なファイルをダウ...

JavaScriptのアロー関数の特徴と通常の関数との違い

目次1. 矢印関数の使用1. 通常関数から矢印関数へ2. 中括弧を省略してリターンする3. 括弧を省...

ふるい抽選を実施するミニプログラム

この記事の例では、ふるい抽選を実装するためのミニプログラムの具体的なコードを参考までに共有しています...

VueにおけるAxios非同期通信の詳細な説明

1. まず、インタラクティブに使用するための .json ファイルを作成します。json データ形式...

Vite2とVue3を使用したウェブサイトの国際化を実現するプロセス全体

目次序文vue-i18nをインストールするロケールの設定getLangs.js の実装i18nインス...

JavaScript が Jingdong の虫眼鏡の特殊効果を模倣

この記事では、Jingdong虫眼鏡を模倣したJavaScriptの具体的なコードを参考までに共有し...

最も単純な ErrorBoundary コンポーネントをカプセル化して、React 例外を処理する

序文React 16から、子コンポーネントで発生したエラーを捕捉し、エラーログを記録し、ダウングレー...

Ubuntu ブート自動起動サービス設定

Ubuntu でサービスを作成し、自動的に起動する方法: 1. [/lib/systemd/syst...

MySQL スケジュールタスクの実装と使用例

この記事では、例を使用して、MySQL スケジュール タスクの実装と使用方法を説明します。ご参考まで...