Skip to content

Commit

Permalink
make Logger.prettyLogger the default logger (#3197)
Browse files Browse the repository at this point in the history
  • Loading branch information
tim-smart committed Oct 11, 2024
1 parent eff0908 commit f45b2b0
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 67 deletions.
5 changes: 5 additions & 0 deletions .changeset/brown-peas-compare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"effect": major
---

make Logger.prettyLogger the default logger
5 changes: 5 additions & 0 deletions .changeset/poor-tools-switch.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"effect": minor
---

add Logger.string Layer, for setting the logger to Logger.stringLogger
33 changes: 2 additions & 31 deletions packages/effect/src/Logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -497,14 +497,6 @@ export const prettyLogger: (
}
) => Logger<unknown, void> = internal.prettyLogger

/**
* A default version of the pretty logger.
*
* @since 3.8.0
* @category constructors
*/
export const prettyLoggerDefault: Logger<unknown, void> = internal.prettyLoggerDefault

/**
* The structured logger provides detailed log outputs, structured in a way that
* retains comprehensive traceability of the events, suitable for deeper
Expand Down Expand Up @@ -592,31 +584,10 @@ export const json: Layer.Layer<never> = replace(fiberRuntime.defaultLogger, fibe
export const logFmt: Layer.Layer<never> = 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<never> = replace(fiberRuntime.defaultLogger, fiberRuntime.prettyLogger)
export const string: Layer.Layer<never> = replace(fiberRuntime.defaultLogger, fiberRuntime.stringLogger)

/**
* The structured logger provides detailed log outputs, structured in a way that
Expand Down
8 changes: 4 additions & 4 deletions packages/effect/src/internal/fiberRuntime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1432,7 +1432,7 @@ export const loggerWithConsoleError = <M, O>(self: Logger<M, O>): Logger<M, void
/** @internal */
export const defaultLogger: Logger<unknown, void> = globalValue(
Symbol.for("effect/Logger/defaultLogger"),
() => loggerWithConsoleLog(internalLogger.stringLogger)
() => internalLogger.prettyLogger()
)

/** @internal */
Expand All @@ -1448,9 +1448,9 @@ export const logFmtLogger: Logger<unknown, void> = globalValue(
)

/** @internal */
export const prettyLogger: Logger<unknown, void> = globalValue(
Symbol.for("effect/Logger/prettyLogger"),
() => internalLogger.prettyLoggerDefault
export const stringLogger: Logger<unknown, void> = globalValue(
Symbol.for("effect/Logger/stringLogger"),
() => loggerWithConsoleLog(internalLogger.stringLogger)
)

/** @internal */
Expand Down
4 changes: 0 additions & 4 deletions packages/effect/src/internal/logger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -571,6 +570,3 @@ const prettyLoggerBrowser = (options: {
}
)
}

/** @internal */
export const prettyLoggerDefault = globalValue("effect/Logger/prettyLoggerDefault", () => prettyLogger())
30 changes: 2 additions & 28 deletions packages/platform/src/Runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -82,23 +62,17 @@ export const makeRunMain = (
): RunMain =>
dual((args) => Effect.isEffect(args[0]), (effect: Effect.Effect<any, any>, 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 })
Expand Down

0 comments on commit f45b2b0

Please sign in to comment.