Hexyll.Core.Logger をリファクタリングする
Hexirp opened this issue · 4 comments
Hexirp commented
ReaderT デザインパターンを採用しよう。
参考になりそうなライブラリ:
Hexirp commented
Logger に何をやらせたいのか?
- ログを記録する。
- ログにはレベルがある。
- レベルよりも詳細な情報としてマーカーを付けたいときもある。
- ログのメッセージの評価は遅延したい。
- 例外とスタックトレースを含めてログを出力したい場合もある。
ただ、これらは log4j の話である。ログのメッセージはもともと遅延され、例外とスタックトレースは、ログのメッセージを作成するときに含める。
Hexirp commented
こんな感じだろうか?
data LogEnv mkr msg = LogEnv
{ logFunc :: mkr -> msg -> IO ()
}
これが最低限のあれだよね。ここから、色々追加していくことになると思うけど。ただ、ここは hexyll なので、これに従わなくともよい。
data LogEnv = LogEnv
{ logFunc :: LogLevel -> String -> IO ()
}
これで十分だろう。
Hexirp commented
多分、 local
みたいな関数を多用することになりそうであれだけど。
Hexirp commented
レベルの重要なことは全順序が入っていることである。マーカーにはそれがない。