例外のlogを快適に

23
例外 log を快適に Play meetup 2, 2015-07-05 @kawachi

Upload: takashi-kawachi

Post on 06-Aug-2015

550 views

Category:

Documents


2 download

TRANSCRIPT

例外 の log を快適にPlay meetup 2, 2015-07-05

@kawachi

普段見ている景色

例外の log ながいなー

Play は logback を使っているのでlogback の機能がそのまま使える

conf/logback.xml に設定すれば OK

デフォルトのフォーマット

<pattern> %coloredLevel - %logger - %message%n%xException </pattern>

stack trace の深さを制限

<pattern> %coloredLevel - %logger - %message%n%xException{3} </pattern>

深さ3まで

各々3つまでに

だいぶ見やすい

でも深さ3で大丈夫?

自アプリの行は全部出したいが 自アプリ内で関数呼び出しが深くなることもあるだろうし…

一方 Rails は…

自分のアプリに含まれる行だけを filter していた

https://github.com/rails/rails/blob/master/railties/lib/rails/backtrace_cleaner.rb

信頼と実績の logback ならできるよね?

4ヶ月前に入ってた!

指定したstack frame を非表示に

<pattern> %coloredLevel - %logger - %message%n %xException{full,play,akka,scala} </pattern>

深さは全部(full) “play” と “akka” と “scala” の行を除く

あ、あれ? 自分の書いた stack frame も出ない…

行を文字列マッチしてるだけなので “scala” を指定すると↓も非表示に…

at controllers.Application.foo(Application.scala:8)

作るしか無いか…

作った

依存性追加して (build.sbt)

libraryDependencies += "com.github.tkawachi" % "appexception-logback" % "0.0.2"

conversionRule を追加 (logback.xml)

<conversionRule conversionWord=“appEx” converterClass= “com.github.tkawachi.appexception.AppThrowableProxyConverter" />

appEx という名前で使えるようにする

指定したstack frame だけ表示

<pattern> %coloredLevel - %logger - %message%n %appEx{controllers,foo.bar} </pattern>

完全修飾クラス名が “controllers”, “foo.bar” から始まる

frame だけを表示。

思い通りの仕上がりに

<property name="appClassPrefixes" value=" controllers, views “/>

<pattern> %coloredLevel - %logger - %message%n %appEx{${appClassPrefixes}} </pattern>

prefix 指定が長くなる時は別定義して呼び出せます

まとめ• logback.xml をいい感じに書くとログが見やすくなる

• 指定クラスの stack frame だけ出すappexception-logback 作ったhttps://github.com/tkawachi/appexception-logback

• Feedback お待ちしています