SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
例外 の 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.AppThr
owableProxyConverter" />
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 お待ちしています

Weitere ähnliche Inhalte

Ähnlich wie 例外のlogを快適に

関数型志向Python - LLまつり2013
関数型志向Python - LLまつり2013関数型志向Python - LLまつり2013
関数型志向Python - LLまつり2013
Esehara Shigeo
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
Kazuya Wada
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
博文 斉藤
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
Sea Mountain
 
Exgettextの話
Exgettextの話Exgettextの話
Exgettextの話
k1complete
 

Ähnlich wie 例外のlogを快適に (20)

関数型志向Python - LLまつり2013
関数型志向Python - LLまつり2013関数型志向Python - LLまつり2013
関数型志向Python - LLまつり2013
 
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみるJJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
 
From Java To Clojure
From Java To ClojureFrom Java To Clojure
From Java To Clojure
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
 
Tokyo r33 beginner
Tokyo r33 beginnerTokyo r33 beginner
Tokyo r33 beginner
 
X86opti01 nothingcosmos
X86opti01 nothingcosmosX86opti01 nothingcosmos
X86opti01 nothingcosmos
 
いまさら聞けないRake入門
いまさら聞けないRake入門いまさら聞けないRake入門
いまさら聞けないRake入門
 
[輪講] 第1章
[輪講] 第1章[輪講] 第1章
[輪講] 第1章
 
Rails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) APIRails解説セミナー: Rails国際化 (I18n) API
Rails解説セミナー: Rails国際化 (I18n) API
 
言語処理系入門1
言語処理系入門1言語処理系入門1
言語処理系入門1
 
GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法GNU awk (gawk) を用いた Apache ログ解析方法
GNU awk (gawk) を用いた Apache ログ解析方法
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
 
Ocamlでpfffを拡張した話
Ocamlでpfffを拡張した話Ocamlでpfffを拡張した話
Ocamlでpfffを拡張した話
 
Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3Ruby on Rails3 Tutorial Chapter3
Ruby on Rails3 Tutorial Chapter3
 
Exgettextの話
Exgettextの話Exgettextの話
Exgettextの話
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
 
2009年のPHPフレームワーク
2009年のPHPフレームワーク2009年のPHPフレームワーク
2009年のPHPフレームワーク
 

Mehr von Takashi Kawachi (12)

MacroPyがすごい
MacroPyがすごいMacroPyがすごい
MacroPyがすごい
 
Silhouette intro
Silhouette introSilhouette intro
Silhouette intro
 
最小 Hello World! チャレンジ
最小 Hello World! チャレンジ最小 Hello World! チャレンジ
最小 Hello World! チャレンジ
 
Sbt doctest
Sbt doctestSbt doctest
Sbt doctest
 
Elastic beanstalk と Docker と Play
Elastic beanstalk と Docker と PlayElastic beanstalk と Docker と Play
Elastic beanstalk と Docker と Play
 
やさしいIteratee入門
やさしいIteratee入門やさしいIteratee入門
やさしいIteratee入門
 
Sbt lock1
Sbt lock1Sbt lock1
Sbt lock1
 
Haskell超初心者勉強会20
Haskell超初心者勉強会20Haskell超初心者勉強会20
Haskell超初心者勉強会20
 
Haskell超初心者勉強会17
Haskell超初心者勉強会17Haskell超初心者勉強会17
Haskell超初心者勉強会17
 
Haskell超初心者勉強会14
Haskell超初心者勉強会14Haskell超初心者勉強会14
Haskell超初心者勉強会14
 
Haskell超初心者勉強会11
Haskell超初心者勉強会11Haskell超初心者勉強会11
Haskell超初心者勉強会11
 
Scalaでの例外処理
Scalaでの例外処理Scalaでの例外処理
Scalaでの例外処理
 

例外のlogを快適に