export const ErrorLoggerMiddleware: (logger: LoggerProvider) => PostMiddleware = (logger: LoggerProvider) => store => {
return pipe(
logger.get(),
Effect.flatMap(logger =>
pipe(
store.getResult(),
Effect.tapError(failure =>
pipe(
{code: failure._tag, details: failure.getDetails()}, //
({details: {message, ...details}, code}) => Effect.sync(() => logger.error(message, {code, ...details}))
)
),
Effect.asUnit
)
)
);
};
export const ErrorLoggerMiddleware: (logger: LoggerProvider) => PostMiddleware = (logger: LoggerProvider) => store => {
return pipe(
logger.get(),
Effect.flatMap(logger =>
pipe(
store.getResult(),
Effect.tapError(failure =>
pipe(
{code: failure._tag, details: failure.getDetails()}, //
({details: {message, ...details}, code}) => Effect.sync(() => logger.error(message, {code, ...details}))
)
),
Effect.asUnit
)
)
);
};