Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
例外 の 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...
信頼と実績の logback なら

できるよね?
4ヶ月前に入ってた!
指定したstack frame を

非表示に
<pattern>
%coloredLevel - %logger -
%message%n
%xException{full,play,akka,scala}
</pattern>
深さは全部(...
あ、あれ?
自分の書いた 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....
指定したstack frame だけ表示
<pattern>
%coloredLevel - %logger -
%message%n
%appEx{controllers,foo.bar}
</pattern>
完全修飾クラス名が
“cont...
思い通りの仕上がりに
<property name="appClassPrefixes" value="

controllers,

views

“/>
<pattern>
%coloredLevel - %logger -
%message%n
%appEx{...
まとめ
• logback.xml をいい感じに書くと

ログが見やすくなる
• 指定クラスの stack frame だけ出す

appexception-logback 作った

https://github.com/tkawachi/ap...
Upcoming SlideShare
Loading in …5
×

例外のlogを快適に

1,221 views

Published on

  • Be the first to comment

例外のlogを快適に

  1. 1. 例外 の log を快適に Play meetup 2, 2015-07-05 @kawachi
  2. 2. 普段見ている景色
  3. 3. 例外の log ながいなー
  4. 4. Play は logback を使っているので
 logback の機能がそのまま使える
  5. 5. conf/logback.xml に設定すれば OK
  6. 6. デフォルトのフォーマット <pattern> %coloredLevel - %logger - %message%n%xException </pattern>
  7. 7. stack trace の深さを制限 <pattern> %coloredLevel - %logger - %message%n%xException{3} </pattern> 深さ3まで
  8. 8. 各々3つまでに だいぶ見やすい
  9. 9. でも深さ3で大丈夫? 自アプリの行は全部出したいが 自アプリ内で関数呼び出しが
 深くなることもあるだろうし…
  10. 10. 一方 Rails は…
 自分のアプリに
 含まれる行だけを filter していた https://github.com/rails/rails/blob/master/railties/lib/rails/ backtrace_cleaner.rb
  11. 11. 信頼と実績の logback なら
 できるよね?
  12. 12. 4ヶ月前に入ってた!
  13. 13. 指定したstack frame を
 非表示に <pattern> %coloredLevel - %logger - %message%n %xException{full,play,akka,scala} </pattern> 深さは全部(full) “play” と “akka” と “scala” の行を除く
  14. 14. あ、あれ? 自分の書いた stack frame も出ない…
  15. 15. 行を文字列マッチしてるだけなので “scala” を指定すると↓も非表示に… at controllers.Application.foo(Application.scala:8)
  16. 16. 作るしか無いか…
  17. 17. 作った
  18. 18. 依存性追加して (build.sbt) libraryDependencies += "com.github.tkawachi" % "appexception-logback" % "0.0.2"
  19. 19. conversionRule を追加 (logback.xml) <conversionRule conversionWord=“appEx” converterClass= “com.github.tkawachi.appexception.AppThr owableProxyConverter" /> appEx という名前で使えるようにする
  20. 20. 指定したstack frame だけ表示 <pattern> %coloredLevel - %logger - %message%n %appEx{controllers,foo.bar} </pattern> 完全修飾クラス名が “controllers”, “foo.bar” から始まる
 frame だけを表示。
  21. 21. 思い通りの仕上がりに
  22. 22. <property name="appClassPrefixes" value="
 controllers,
 views
 “/> <pattern> %coloredLevel - %logger - %message%n %appEx{${appClassPrefixes}} </pattern> prefix 指定が長くなる時は別定義して呼び出せます
  23. 23. まとめ • logback.xml をいい感じに書くと
 ログが見やすくなる • 指定クラスの stack frame だけ出す
 appexception-logback 作った
 https://github.com/tkawachi/appexception-logback • Feedback お待ちしています

×