| 1 | effect/Logger#add: |
| 2 | replacement: "Logger.layer([logger], { mergeWithExisting: true })" |
| 3 | note: "Logger installation is whole-set based; mergeWithExisting reproduces add." |
| 4 | effect/Logger#addEffect: |
| 5 | replacement: "Logger.layer([loggerEffect], { mergeWithExisting: true })" |
| 6 | note: "Logger.layer accepts effects that construct loggers." |
| 7 | effect/Logger#addScoped: |
| 8 | replacement: "Logger.layer([scopedLoggerEffect], { mergeWithExisting: true })" |
| 9 | note: "Layer acquisition handles the scoped effect; the separate scoped constructor is gone." |
| 10 | effect/Logger#batched: |
| 11 | replacement: "Logger.batched(logger, { window, flush })" |
| 12 | note: "The trailing arguments moved into one options object. Provide any services needed by flush before constructing it." |
| 13 | effect/Logger#filterLogLevel: |
| 14 | replacement: "Logger.make(options => predicate(options.logLevel) ? Option.some(logger.log(options)) : Option.none())" |
| 15 | note: "No named combinator remains; rebuild the wrapper with Logger.make. Prefer References.MinimumLogLevel for ordinary threshold filtering." |
| 16 | effect/Logger#json: |
| 17 | replacement: "Logger.layer([Logger.consoleJson, Logger.tracerLogger])" |
| 18 | note: "Logger.layer replaces the active set. Include tracerLogger to preserve v3 built-in layer behavior, or omit it when trace log events are intentionally disabled." |
| 19 | effect/Logger#jsonLogger: |
| 20 | replacement: "Logger.formatJson" |
| 21 | note: "Formatter rename; v4 JSON output uses level rather than logLevel." |
| 22 | effect/Logger#logFmt: |
| 23 | replacement: "Logger.layer([Logger.consoleLogFmt, Logger.tracerLogger])" |
| 24 | note: "Logger.layer replaces the active set; include tracerLogger to preserve v3 built-in layer behavior." |
| 25 | effect/Logger#logfmtLogger: |
| 26 | replacement: "Logger.formatLogFmt" |
| 27 | note: "Formatter rename and capitalization change." |
| 28 | effect/Logger#Logger: |
| 29 | replacement: "Logger.Logger" |
| 30 | note: "The name remains. Logger.Options now has fiber instead of fiberId; read the id from fiber.id and annotations or spans through fiber references." |
| 31 | effect/Logger#Logger.Variance: |
| 32 | replacement: "none" |
| 33 | note: "Public variance metadata was removed; use Logger.Logger<Message, Output> directly." |
| 34 | effect/Logger#LoggerTypeId: |
| 35 | replacement: "Logger.isLogger" |
| 36 | note: "The brand is private in v4; use the public runtime guard." |
| 37 | effect/Logger#map: |
| 38 | replacement: "Logger.map" |
| 39 | note: "Retained with the same output-mapping behavior." |
| 40 | effect/Logger#mapInput: |
| 41 | replacement: "Logger.make(options => logger.log({ ...options, message: f(options.message) }))" |
| 42 | note: "No named input contramap remains; rebuild it with Logger.make." |
| 43 | effect/Logger#mapInputOptions: |
| 44 | replacement: "Logger.make(options => logger.log(f(options)))" |
| 45 | note: "No named options contramap remains; rebuild it with Logger.make and adapt f to the v4 Logger.Options shape." |
| 46 | effect/Logger#minimumLogLevel: |
| 47 | replacement: "Layer.succeed(References.MinimumLogLevel, level)" |
| 48 | note: "Minimum log level is now a context reference." |
| 49 | effect/Logger#none: |
| 50 | replacement: "Logger.make(() => undefined)" |
| 51 | note: "Rebuild the no-op logger with Logger.make." |
| 52 | effect/Logger#pretty: |
| 53 | replacement: "Logger.layer([Logger.consolePretty(), Logger.tracerLogger])" |
| 54 | note: "Logger.layer replaces the active set; include tracerLogger to preserve v3 built-in layer behavior." |
| 55 | effect/Logger#prettyLogger: |
| 56 | replacement: "Logger.consolePretty" |
| 57 | note: "Renamed to consolePretty. Remove the stderr option; provide Logger.LogToStderr with true to route TTY output to console.error. Colors, formatDate, and mode remain constructor options." |
| 58 | effect/Logger#prettyLoggerDefault: |
| 59 | replacement: "Logger.consolePretty()" |
| 60 | note: "The prebuilt singleton became a constructor call." |
| 61 | effect/Logger#remove: |
| 62 | replacement: "Logger.layer([...desiredLoggers])" |
| 63 | note: "No named removal combinator remains. Declare the complete desired logger set; transform Logger.CurrentLoggers only when removing from an unknown inherited set is unavoidable." |
| 64 | effect/Logger#replace: |
| 65 | replacement: "Logger.layer([...desiredLoggers])" |
| 66 | note: "V4 replaces the whole active set. When replacing the old default logger, include Logger.tracerLogger explicitly if it must survive." |
| 67 | effect/Logger#replaceEffect: |
| 68 | replacement: "Logger.layer([loggerEffect, ...otherLoggers])" |
| 69 | note: "Logger.layer accepts effects. Explicitly list every logger that must remain active." |
| 70 | effect/Logger#replaceScoped: |
| 71 | replacement: "Logger.layer([scopedLoggerEffect, ...otherLoggers])" |
| 72 | note: "Logger.layer acquisition supplies the scope; explicitly list every logger that must remain active." |
| 73 | effect/Logger#simple: |
| 74 | replacement: "Logger.make(({ message }) => log(message))" |
| 75 | note: "V3 simple was a message-only custom logger constructor; rebuild it with Logger.make." |
| 76 | effect/Logger#stringLogger: |
| 77 | replacement: "Logger.formatSimple" |
| 78 | note: "The prebuilt string formatter was renamed." |
| 79 | effect/Logger#structured: |
| 80 | replacement: "Logger.layer([Logger.consoleStructured, Logger.tracerLogger])" |
| 81 | note: "Logger.layer replaces the active set; include tracerLogger to preserve v3 built-in layer behavior." |
| 82 | effect/Logger#structuredLogger: |
| 83 | replacement: "Logger.formatStructured" |
| 84 | note: "Formatter rename; its output field logLevel is now named level." |
| 85 | effect/Logger#succeed: |
| 86 | replacement: "Logger.make(() => value)" |
| 87 | note: "Rebuild the constant-output logger with Logger.make." |
| 88 | effect/Logger#sync: |
| 89 | replacement: "Logger.make(() => evaluate())" |
| 90 | note: "Rebuild the lazy-output logger; evaluate still runs once per log event." |
| 91 | effect/Logger#test: |
| 92 | replacement: "Effect.log(input).pipe(Effect.provide(Logger.layer([capturingLogger])))" |
| 93 | note: "No synthetic-options helper remains. Exercise the logger through the runtime and capture its output so it receives a real Fiber, cause, level, and date." |
| 94 | effect/Logger#withMinimumLogLevel: |
| 95 | replacement: "Effect.provideService(effect, References.MinimumLogLevel, level)" |
| 96 | note: "Replace the FiberRef-local helper with reference provisioning." |
| 97 | effect/Logger#withSpanAnnotations: |
| 98 | replacement: "custom Logger.make wrapper using options.fiber.cache.span" |
| 99 | note: "No transparent generic equivalent remains. Read span identity from options.fiber.cache.span and add it to custom output as needed." |
| 100 | effect/Logger#zip: |
| 101 | replacement: "Logger.make(options => [left.log(options), right.log(options)])" |
| 102 | note: "No named combinator remains; invoke both loggers and return their output tuple." |
| 103 | effect/Logger#zipLeft: |
| 104 | replacement: "Logger.make(options => { const output = left.log(options); right.log(options); return output })" |
| 105 | note: "Rebuild explicitly, preserving evaluation of both loggers and returning the left output." |
| 106 | effect/Logger#zipRight: |
| 107 | replacement: "Logger.make(options => { left.log(options); return right.log(options) })" |
| 108 | note: "Rebuild explicitly, preserving evaluation order and returning the right output." |