UNPKG

@foal/core

Version:

Full-featured Node.js framework, with no complexity

75 lines (74 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = void 0; // std const node_async_hooks_1 = require("node:async_hooks"); // FoalTS const config_1 = require("../config"); const logger_utils_1 = require("./logger.utils"); class Logger { contextStorage = new node_async_hooks_1.AsyncLocalStorage(); errorContextStorage = new node_async_hooks_1.AsyncLocalStorage(); transports = [ (level, log) => console.log(log), ]; addTransport(transport) { this.transports.push(transport); } initLogContext(callback) { this.contextStorage.run({}, () => { this.errorContextStorage.run({}, callback); }); } addLogContext(context) { const store = this.contextStorage.getStore(); if (!store) { this.log('warn', 'Impossible to add log context information. The logger context has not been initialized.'); return; } Object.assign(store, context); } addErrorContext(context) { const store = this.errorContextStorage.getStore(); if (!store) { this.log('warn', 'Impossible to add error context information. The logger context has not been initialized.'); return; } Object.assign(store, context); } log(level, message, params = {}) { const format = config_1.Config.get('settings.logger.format', 'string', 'raw'); if (format === 'none') { return; } const configLogLevel = config_1.Config.get('settings.logger.logLevel', 'string', 'info'); if (!(0, logger_utils_1.shouldLog)(level, configLogLevel)) { return; } ; const now = new Date(); const contextParams = this.contextStorage.getStore(); const errorContextParams = level === 'error' ? this.errorContextStorage.getStore() : {}; const formattedMessage = (0, logger_utils_1.formatMessage)(level, message, { ...contextParams, ...errorContextParams, ...params, }, format, now); for (const transport of this.transports) { transport(level, formattedMessage); } } debug(message, params = {}) { this.log('debug', message, params); } info(message, params = {}) { this.log('info', message, params); } warn(message, params = {}) { this.log('warn', message, params); } error(message, params = {}) { this.log('error', message, params); } } exports.Logger = Logger;