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 で物理エンジン ジョイントを使用する方法

推薦する

ウェブページの画像を素早く表示する方法とテクニック

1. .jpg ではなく .gif を使用します。GIF は JPG に比べてサイズが小さくなります...

JavaScript メッセージ ボックスの例

JavaScript では、警告ボックス、確認ボックス、プロンプト ボックスの 3 種類のメッセージ...

MySQL でよく使用される SQL 文を表示する (詳細な説明)

#mysql -uroot -pパスワードを入力してくださいmysql> show full...

Iframe 適応高さコードに関する 3 つの議論

B/S システム インターフェースを構築する場合、メイン ページ index.html 内に他のペー...

Nginx try_files ディレクティブの使用例

Nginx の設定構文は柔軟で、高度に制御可能です。バージョン 0.7 以降では、try_files...

LinuxでHomebrewを使用する正しい方法

多くの人が Linux Homebrew を使用しています。これをより良く使用するための 3 つのヒ...

crontab スケジュールされたタスクが実行されない理由の分析と解決

序文Linux のスケジュールされたタスクを実装する方法としては、cron、anacron、at な...

Vue 開発ガイドの重要な知識の要約

目次概要0. JavaScriptとWeb開発の基礎1. Vueの基本概念Vue コア機能コンポーネ...

Vue エクスポート Excel 機能の全プロセス記録

目次1. フロントエンドのリーディングプロセス: 2. プラグインの使用と初期化2.1 vue-ad...

Vue の 2 択タブバー切り替えの新しいアプローチ

問題の説明プロジェクトに取り組んでいるときに、タブ バーの切り替え効果を作成する必要がある場合があり...

MySQL 百万レベルのデータページングクエリ最適化ソリューション

データベースからクエリする必要があるテーブルに数万件のレコードがある場合、すべての結果を一度にクエリ...

JavaScript es6 における var、let、const の違いの詳細な説明

まず、よくある質問は、ECMAScript と JavaScript の関係は何ですか? ECMAS...

JavaScript にはすでに Object があるのに、なぜ Map が必要なのでしょうか?

目次1. オブジェクトをマップとして扱わない1. 未定義のプロパティはプロトタイプチェーンを通じてア...

Mac 環境での Nginx 構成とローカル静的リソースへのアクセスの実装

ローカル開発では、直接アクセスできない静的ファイル リソースのデバッグが必要になる場合があります。こ...

vue+elementuiは、共有箇条書きボックスの追加と変更の完全なコードを実装します。

目次1. 新しいII. 変更element-ui は、Ele.me のフロントエンド チームが開発者...