Logger (effect)
Log Event (e.g. logLevel, message, annotations, spans など)を最終的な出力形式に変換する
Built-in Loggerもあるし、自作もできる
使い方
e.g. program.pipe(Effect.provide(Logger.pretty))
Built-in Loggers
自作する
出力形式や出力先を変える
code:ts
const logger = Logger.make(({ logLevel, message }) => {
globalThis.console.log([${logLevel.label}] ${message})
})
logger は「ログイベント(レベルや message など)を受け取ってどう処理するか」を定義します。
ここでは単純に console.log に整形して出しています。
code:ts
const layer = Logger.replace(Logger.defaultLogger, logger)
Effect.runFork(
program.pipe(
Logger.withMinimumLogLevel(LogLevel.Debug),
Effect.provide(layer)
)
)
Logger.replace(old, new) は **「logger サービスの実装を置き換える Layer」**を作ります。
withMinimumLogLevel(Debug) は「どのログを通すか」のフィルタ。
replace は「通ったログをどう出力するか(フォーマット/送信先)」の変更。