| 12 | }) {} |
| 13 | |
| 14 | export const makeLog = (namespace: string, defaultLevel: Levels = "warn") => { |
| 15 | const level = LogLevels.use((levels) => Effect.succeed(levels.get(namespace) ?? defaultLevel)) |
| 16 | const withLogNamespace = Effect.annotateLogs({ logNamespace: namespace }) |
| 17 | return { |
| 18 | logWarning: (...message: ReadonlyArray<any>) => |
| 19 | Effect.flatMap(level, (l) => |
| 20 | l === "info" || l === "debug" || l === "warn" |
| 21 | ? Effect.logWarning(...message).pipe(withLogNamespace) |
| 22 | : Effect.void), |
| 23 | logError: (...message: ReadonlyArray<any>) => Effect.logError(...message).pipe(withLogNamespace), |
| 24 | logFatal: (...message: ReadonlyArray<any>) => Effect.logFatal(...message).pipe(withLogNamespace), |
| 25 | logInfo: (...message: ReadonlyArray<any>) => |
| 26 | Effect.flatMap( |
| 27 | level, |
| 28 | (l) => l === "info" || l === "debug" ? Effect.logInfo(...message).pipe(withLogNamespace) : Effect.void |
| 29 | ), |
| 30 | logDebug: (...message: ReadonlyArray<any>) => |
| 31 | Effect.flatMap(level, (l) => l === "debug" ? Effect.logDebug(...message).pipe(withLogNamespace) : Effect.void), |
| 32 | // for now always log |
| 33 | logWithLevel: (level: LogLevel.Severity, ...message: ReadonlyArray<any>) => |
| 34 | Effect.logWithLevel(level)(...message).pipe(withLogNamespace) |
| 35 | } |
| 36 | } |