code up

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

logbackでエラー通知 (Amazon SES経由)

こういった話はいつも後手な訳だけど、、、つい最近、時代はもうlog4jではなく今後のデファクトはSLF4Jになりつつあるということを知った。そこで既存のコードをlog4jからSLF4J(w/logback)に移行。

log4jでできていたことはlogbackでもできるみたいなので、早速Amazon SES経由のエラー通知(org.apache.log4j.net.SMTPAppender)を行っていた部分をlogback用に書き換え。

layoutincludeCallerData, asynchronousSending, その他オプションはお好みで。

asynchronousSendingはデフォルトtrue。例えば致命的なエラーで終了するように設計されたスタンドアロンなアプリケーションな場合、非同期送信にしちゃうと送信が間に合わないよ、って注意書きがある程度なのでWebアプリケーションであればtrueのままでよさそう。

evaluatorオプションをいじらなければ、log4jの時と同様ERROR以上でのみメールが送信される。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration>

<configuration debug="false">
	<consolePlugin />

	<contextName>foo</contextName>

	<appender name="S" class="ch.qos.logback.classic.net.SMTPAppender">
		<smtpHost>email-smtp.us-east-1.amazonaws.com</smtpHost>
		<smtpPort>587</smtpPort>
		<from>foo@bar.biz</from>
		<to>foo@bar.biz</to>
		<username>[SMTPユーザー名]</username>
		<password>[SMTPパスワード]</password>
		<STARTTLS>true</STARTTLS>
		<subject>ERROR Log</subject>
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%date %5p %c{0} [%file:%line] - %m%n</pattern>
		</layout>
		<!-- includeCallerData:false, asynchronousSending:trueの組み合わせは行番号が出ないので注意 -->
		<includeCallerData>true</includeCallerData>
		<asynchronousSending>true</asynchronousSending>
	</appender>
    
	<root level="info">
		<appender-ref ref="S" />
	</root>
	
</configuration>
関連記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。