【Java】Log4j2からGoogleChatにエラーを通知する方法!

java Google

※この記事にはプロモーションが含まれています。

Log4j2を使ってGoogleChatにエラー通知を行えるようになったので、備忘を含めて書いておきます。

スポンサーリンク

Log4j2の導入

まずはLog4j2を導入します。

下記のサイトからライブラリをzipでまとめてダウンロードしてきます。

Log4j – Download Apache Log4j™ 2

使うのはとりあえず下記の2つだけでいいので、この2つをライブラリに追加します。

  • log4j-api-2.XX.X.jar
  • log4j-core-2.XX.X.jar

GoogleChatに送る為のライブラリを追加

こちらにライブラリを作成してくれた方がアップしてくれているので、こちらのライブラリを使わせていただきます。

GitHub - modeverv/log4j-googlechat
Contribute to modeverv/log4j-googlechat development by creating an account on GitHub.

jacksonもライブラリ追加

jacksonを使っているのでjacksonもライブラリ追加します。

Just a moment...

log4j.xmlでGoogleChatに送る設定

GoogleChatに送信する設定はlog4j.xmlに書いていきます。
Java側でlog4j.xmlが読み込めていない場合は、下記で読み込ませてください。

System.setProperty("log4j.configurationFile", 【log4j.xmlのパス】);

まずはGoogleChatでWebhookのURLを取得します。
通知を行いたいスペースで「アプリと統合」をクリック

右下に「Webhookを追加」があるのでクリックします。

するとURLが表示されるので、このURLをlog4j.xmlに通知先として指定します。
log4j.xmlは例としてこんな感じ。
URLに含まれる”&”はエラーになるので”&”に置き換えてください。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration>
<Configuration status="WARN" packages="asia.daemon.lovesaemi.googlechatappender">
	<Appenders>
	
		<Console name="Console" target="SYSTEM_OUT">
			<PatternLayout pattern="%d{yyy/MM/dd HH:mm:ss.SSS} %-5level - %msg%n" />
		</Console>
        <GoogleChat name="googlechat" webhook="https://chat.googleapis.com/v1/spaces/XXXXX/messages?key=XXXXX&amp;token=XXXXXX">

            <PatternLayout pattern="%m"/>

        </GoogleChat>


	</Appenders>

	<Loggers>

		<Root>
			<AppenderRef ref="Console" level="INFO"/>
			<AppenderRef ref="googlechat" level="ERROR"/>
		</Root>

	</Loggers>
</Configuration>

例の設定では、INFOログはコンソールに、ERRORログはGoogleチャットに通知するように指定してあります。

これでLog4j2からの通知をGoogleチャットに通知できるようになるはずです。

コメント

タイトルとURLをコピーしました