| 912 | * @since 4.0.0 |
| 913 | */ |
| 914 | export const layer = < |
| 915 | const Loggers extends ReadonlyArray<Logger<unknown, unknown> | Effect.Effect<Logger<unknown, unknown>, any, any>> |
| 916 | >( |
| 917 | loggers: Loggers, |
| 918 | options?: { readonly mergeWithExisting?: boolean | undefined } | undefined |
| 919 | ): Layer.Layer< |
| 920 | never, |
| 921 | Loggers extends readonly [] ? never : Effect.Error<Loggers[number]>, |
| 922 | Exclude< |
| 923 | Loggers extends readonly [] ? never : Effect.Services<Loggers[number]>, |
| 924 | Scope.Scope |
| 925 | > |
| 926 | > => |
| 927 | Layer.effect( |
| 928 | CurrentLoggers, |
| 929 | withFiber(effect.fnUntraced(function*(fiber) { |
| 930 | const currentLoggers = new Set(options?.mergeWithExisting === true ? fiber.getRef(effect.CurrentLoggers) : []) |
| 931 | for (const logger of loggers) { |
| 932 | currentLoggers.add(isEffect(logger) ? yield* logger : logger) |
| 933 | } |
| 934 | return currentLoggers |
| 935 | })) |
| 936 | ) |
| 937 | |
| 938 | /** |
| 939 | * Creates a scoped logger that writes string logger output to a file. |