Hexirp/hexirp-hakyll

Hexyll.Core.Logger をリファクタリングする

Hexirp opened this issue · 4 comments

Logger に何をやらせたいのか?

  • ログを記録する。
    • ログにはレベルがある。
    • レベルよりも詳細な情報としてマーカーを付けたいときもある。
    • ログのメッセージの評価は遅延したい。
    • 例外とスタックトレースを含めてログを出力したい場合もある。

ただ、これらは log4j の話である。ログのメッセージはもともと遅延され、例外とスタックトレースは、ログのメッセージを作成するときに含める。

こんな感じだろうか?

data LogEnv mkr msg = LogEnv
  { logFunc :: mkr -> msg -> IO ()
  }

これが最低限のあれだよね。ここから、色々追加していくことになると思うけど。ただ、ここは hexyll なので、これに従わなくともよい。

data LogEnv = LogEnv
  { logFunc :: LogLevel -> String -> IO ()
  }

これで十分だろう。

多分、 local みたいな関数を多用することになりそうであれだけど。

レベルの重要なことは全順序が入っていることである。マーカーにはそれがない。