Tomcatのcatalina.outをsyslogサーバーに転送する

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちは。サイオステクノロジーの小川です。

今回はTomcatのcatalina.outをsyslogサーバーに転送する方法について書きたいと思います。

syslogへの出力方法

Tomcatライブラリーのデフォルトではsyslogにログを転送できません。syslogでのログを出力するにはlog4j2ライブラリーを利用します。下記の図のようにlog4j2を経由することで標準出力ログとsyslogのログを出力することができます。

log4j2で必要最低限のモジュールは

  • log4j-api
  • log4j-core

になります。

今回はlog4j2のApplication Serverモジュールを利用して、CATALINA_HOME直下の既存ディレクトリ内はほぼいじらずに、新しくlog4j2というディレクトリを作成し、log4j2配下のファイルを統合する設定を記載します。

設定環境

今回検証で利用した環境は以下になります。

OSCentOS 7.7
ミドルウェアApache 2.4.6
Apache tomcat 9.0.30
Open JDK 11.0.5
log4j 2.13.0
rsyslog 8.24.0

ApacheとApache Tomcatの設定は終わっていることを前提とします。

tomcatのlog4j2設定

Apache Log4j 2を下記URLからダウンロードします。

https://logging.apache.org/log4j/2.x/download.html

ダウンロードしたら、解凍します。

# tar -zxvf apache-log4j-2.13.0-bin.tar.gz

CATALINA_HOME配下にlog4j2ディレクトリを作成します。

# mkdir /usr/local/tomcat/log4j2

apache-log4j-2.13.0-binディレクトリに移動します。

# cd apache-log4j-2.13.0-bin

log4j2配下にlibディレクトリを作成し、apache-log4j-2.13.1-bin配下の

  • log4j-api-2.13.0.jar
  • log4j-core-2.13.0.jar
  • log4j-appserver-2.13.0.jar

上記3つのjarファイルをlibディレクトリ配下に置きます。

log4j2ディレクトリの設定を統合するために、/usr/local/tomcat/bin/setenv.shにCLASSPATHの設定を追記します。

# vim /usr/local/tomcat/bin/setenv.sh

setenv.shを読み込みます。

# source /usr/local/tomcat/bin/setenv.sh

log4j2配下にconfディレクトリを作成します。

# mkdir /usr/local/tomcat/log4j2/conf

ログ出力ファイルを作成し、以下のように設定します。今回はファシリティをLOCAL1 で設定します。

# vim /usr/local/tomcat/log4j2/conf/log4j2.xml

ローカルの出力ログのローテーション設定をlogrotateで設定する場合は、RollingFile Appenderの設定部分(<RollingFile>~</RollingFile>)とLoggerの<AppenderRef ref=”catalina”/>をコメントアウトし、logrotateでローテーションの設定をしてください。

tomcatを再起動します。

# systemctl restart tomcat

以上でtomcatの設定は完了です。

syslogサーバーでの設定

syslogサーバーでLOCAL1のログを受信する設定をします。

ポート514のUDPを開放し、local1の出力先を指定します。

# vim /etc/rsyslog.conf

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514


local1.*      /var/log/catalina.out

rsyslogを再起動します。

# systemctl restart rsyslog

 

以上で設定は完了です。

tomcatを再起動するとログがsyslogサーバーに転送されていることが確認できます。

 

~参考URL~

https://logging.apache.org/log4j/2.x/download.html

https://logging.apache.org/log4j/log4j-2.11.2/log4j-appserver/index.html

https://logging.apache.org/log4j/2.x/manual/appenders.html#SyslogAppender

アバター画像
About 小川雄大 27 Articles
IDaaSプロジェクトを担当。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

2人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる