@krainovsd/fastify-logger
Version:
Krainov fastify logger
68 lines (65 loc) • 2.38 kB
JavaScript
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 };
//# sourceMappingURL=logger.js.map