UNPKG

@krainovsd/fastify-logger

Version:
67 lines (64 loc) 2.34 kB
import { ResponseError, isBoolean, isObject } from '@krainovsd/js-helpers'; import { getErrorInfo } from './lib/index.js'; class Logger { logger; constructor({ logger }) { this.logger = logger; } async loggerLayer({ action, processData, loggerExecute = { error: true, start: false, stop: false }, loggerMessage, loggerInfo, }) { try { if (this.isHasLoggerAction(loggerExecute, "start")) this.debug({ info: loggerInfo, message: `start ${loggerMessage}` }); const data = await action(); const processingData = processData ? await processData(data) : data; if (this.isHasLoggerAction(loggerExecute, "stop")) this.debug({ info: loggerInfo, message: `stop ${loggerMessage}` }); return processingData; } catch (error) { if (this.isHasLoggerAction(loggerExecute, "error")) this.warn({ info: loggerInfo, error, message: `error ${loggerMessage}` }); throw error; } } async controllerLayer(action, logger = true) { try { const result = await action(); return { data: result, status: 200, success: true, }; } catch (error) { if (logger) this.error({ error }); if (error instanceof ResponseError) { return { data: { message: error.message }, status: error.status, success: false }; } throw error; } } debug({ info = {}, message = "debug" }) { this.logger.debug(info, message); } info({ info = {}, message = "info" }) { this.logger.info(info, message); } warn({ info = {}, message = "warn", error }) { const errorInfo = getErrorInfo(error, false); this.logger.warn({ ...errorInfo, ...info }, message); } error({ error, info = {}, message = "error" }) { const errorInfo = getErrorInfo(error); this.logger.error({ ...errorInfo, ...info }, message); } isHasLoggerAction(options, action) { if (isBoolean(options)) return options; if (isObject(options)) return Boolean(options[action]); return false; } } export { Logger };