From 65ecdaca393dda216dcaae74eb71da29125466e6 Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 13 Sep 2024 13:57:02 +1200 Subject: [PATCH] make Logger.prettyLogger the default logger (#3197) --- .changeset/brown-peas-compare.md | 5 +++ .changeset/poor-tools-switch.md | 5 +++ packages/effect/src/Logger.ts | 33 ++------------------ packages/effect/src/internal/fiberRuntime.ts | 8 ++--- packages/effect/src/internal/logger.ts | 4 --- packages/platform/src/Runtime.ts | 30 ++---------------- 6 files changed, 18 insertions(+), 67 deletions(-) create mode 100644 .changeset/brown-peas-compare.md create mode 100644 .changeset/poor-tools-switch.md diff --git a/.changeset/brown-peas-compare.md b/.changeset/brown-peas-compare.md new file mode 100644 index 00000000000..7c5bf4cc302 --- /dev/null +++ b/.changeset/brown-peas-compare.md @@ -0,0 +1,5 @@ +--- +"effect": major +--- + +make Logger.prettyLogger the default logger diff --git a/.changeset/poor-tools-switch.md b/.changeset/poor-tools-switch.md new file mode 100644 index 00000000000..8ef566daa9c --- /dev/null +++ b/.changeset/poor-tools-switch.md @@ -0,0 +1,5 @@ +--- +"effect": minor +--- + +add Logger.string Layer, for setting the logger to Logger.stringLogger diff --git a/packages/effect/src/Logger.ts b/packages/effect/src/Logger.ts index 60a06251853..1a3fb41bc81 100644 --- a/packages/effect/src/Logger.ts +++ b/packages/effect/src/Logger.ts @@ -497,14 +497,6 @@ export const prettyLogger: ( } ) => Logger = internal.prettyLogger -/** - * A default version of the pretty logger. - * - * @since 3.8.0 - * @category constructors - */ -export const prettyLoggerDefault: Logger = internal.prettyLoggerDefault - /** * The structured logger provides detailed log outputs, structured in a way that * retains comprehensive traceability of the events, suitable for deeper @@ -592,31 +584,10 @@ export const json: Layer.Layer = replace(fiberRuntime.defaultLogger, fibe export const logFmt: Layer.Layer = replace(fiberRuntime.defaultLogger, fiberRuntime.logFmtLogger) /** - * The pretty logger utilizes the capabilities of the console API to generate - * visually engaging and color-enhanced log outputs. This feature is - * particularly useful for improving the readability of log messages during - * development and debugging processes. - * - * @example - * import { Effect, Logger } from "effect" - * - * const program = Effect.log("message1", "message2").pipe( - * Effect.annotateLogs({ key1: "value1", key2: "value2" }), - * Effect.withLogSpan("myspan") - * ) - * - * // Effect.runFork(program.pipe(Effect.provide(Logger.pretty))) - * // green --v v-- bold and cyan - * // [07:51:54.434] INFO (#0) myspan=1ms: message1 - * // message2 - * // v-- bold - * // key2: value2 - * // key1: value1 - * - * @since 3.5.0 + * @since 4.0.0 * @category constructors */ -export const pretty: Layer.Layer = replace(fiberRuntime.defaultLogger, fiberRuntime.prettyLogger) +export const string: Layer.Layer = replace(fiberRuntime.defaultLogger, fiberRuntime.stringLogger) /** * The structured logger provides detailed log outputs, structured in a way that diff --git a/packages/effect/src/internal/fiberRuntime.ts b/packages/effect/src/internal/fiberRuntime.ts index 428e9cdf082..b54534333c7 100644 --- a/packages/effect/src/internal/fiberRuntime.ts +++ b/packages/effect/src/internal/fiberRuntime.ts @@ -1432,7 +1432,7 @@ export const loggerWithConsoleError = (self: Logger): Logger = globalValue( Symbol.for("effect/Logger/defaultLogger"), - () => loggerWithConsoleLog(internalLogger.stringLogger) + () => internalLogger.prettyLogger() ) /** @internal */ @@ -1448,9 +1448,9 @@ export const logFmtLogger: Logger = globalValue( ) /** @internal */ -export const prettyLogger: Logger = globalValue( - Symbol.for("effect/Logger/prettyLogger"), - () => internalLogger.prettyLoggerDefault +export const stringLogger: Logger = globalValue( + Symbol.for("effect/Logger/stringLogger"), + () => loggerWithConsoleLog(internalLogger.stringLogger) ) /** @internal */ diff --git a/packages/effect/src/internal/logger.ts b/packages/effect/src/internal/logger.ts index 5bb919236a9..5fc774c9612 100644 --- a/packages/effect/src/internal/logger.ts +++ b/packages/effect/src/internal/logger.ts @@ -3,7 +3,6 @@ import * as Context from "../Context.js" import * as FiberRefs from "../FiberRefs.js" import type { LazyArg } from "../Function.js" import { constVoid, dual, pipe } from "../Function.js" -import { globalValue } from "../GlobalValue.js" import * as HashMap from "../HashMap.js" import * as Inspectable from "../Inspectable.js" import * as List from "../List.js" @@ -571,6 +570,3 @@ const prettyLoggerBrowser = (options: { } ) } - -/** @internal */ -export const prettyLoggerDefault = globalValue("effect/Logger/prettyLoggerDefault", () => prettyLogger()) diff --git a/packages/platform/src/Runtime.ts b/packages/platform/src/Runtime.ts index 223e5aee087..fae0939fa00 100644 --- a/packages/platform/src/Runtime.ts +++ b/packages/platform/src/Runtime.ts @@ -5,12 +5,7 @@ import * as Cause from "effect/Cause" import * as Effect from "effect/Effect" import * as Exit from "effect/Exit" import type * as Fiber from "effect/Fiber" -import type * as FiberId from "effect/FiberId" -import * as FiberRef from "effect/FiberRef" -import * as FiberRefs from "effect/FiberRefs" import { dual } from "effect/Function" -import * as HashSet from "effect/HashSet" -import * as Logger from "effect/Logger" /** * @category model @@ -53,21 +48,6 @@ export interface RunMain { ): void } -const addPrettyLogger = (refs: FiberRefs.FiberRefs, fiberId: FiberId.Runtime) => { - const loggers = FiberRefs.getOrDefault(refs, FiberRef.currentLoggers) - if (!HashSet.has(loggers, Logger.defaultLogger)) { - return refs - } - return FiberRefs.updateAs(refs, { - fiberId, - fiberRef: FiberRef.currentLoggers, - value: loggers.pipe( - HashSet.remove(Logger.defaultLogger), - HashSet.add(Logger.prettyLoggerDefault) - ) - }) -} - /** * @category constructors * @since 1.0.0 @@ -82,23 +62,17 @@ export const makeRunMain = ( ): RunMain => dual((args) => Effect.isEffect(args[0]), (effect: Effect.Effect, options?: { readonly disableErrorReporting?: boolean | undefined - readonly disablePrettyLogger?: boolean | undefined readonly teardown?: Teardown | undefined }) => { const fiber = options?.disableErrorReporting === true - ? Effect.runFork(effect, { - updateRefs: options?.disablePrettyLogger === true ? undefined : addPrettyLogger - }) + ? Effect.runFork(effect) : Effect.runFork( Effect.tapErrorCause(effect, (cause) => { if (Cause.isInterruptedOnly(cause)) { return Effect.void } return Effect.logError(cause) - }), - { - updateRefs: options?.disablePrettyLogger === true ? undefined : addPrettyLogger - } + }) ) const teardown = options?.teardown ?? defaultTeardown return f({ fiber, teardown })