UNPKG

@push.rocks/smartlog

Version:

A minimalistic, distributed, and extensible logging tool supporting centralized log management.

122 lines 9.04 kB
import * as plugins from './smartlog.plugins.js'; import { LogRouter } from './smartlog.classes.logrouter.js'; import { LogGroup } from './smartlog.classes.loggroup.js'; export class Smartlog { // STATIC static createForCommitinfo(commitinfo) { return new Smartlog({ logContext: { commitinfo, }, }); } addLogDestination(logDestinationArg) { this.logRouter.addLogDestination(logDestinationArg); } constructor(optionsArg) { this.uniInstanceId = plugins.isounique.uni(); this.logRouter = new LogRouter(); this.logContext = optionsArg.logContext; this.minimumLogLevel = optionsArg.minimumLogLevel || 'silly'; } // ============ // Logger Setup // ============ /** * enables console logging */ enableConsole(optionsArg) { if (globalThis.process && optionsArg && optionsArg.captureAll) { const process = globalThis.process; const originalStdoutWrite = process.stdout.write.bind(process.stdout); const originalStderrWrite = process.stderr.write.bind(process.stderr); process.stdout.write = (...args) => { const logString = args[0]; if (!logString || typeof logString !== 'string') { // continue as planned return originalStdoutWrite(...args); } if (!logString.startsWith('LOG')) { if (logString.includes('Error:')) { this.log('error', logString); } else { this.log('info', logString); } return true; } return originalStdoutWrite(...args); }; process.stderr.write = (...args) => { const logString = args[0]; if (!logString || typeof logString !== 'string' || !logString.startsWith('LOG')) { this.log('error', logString); return true; } return originalStderrWrite(...args); }; } this.consoleEnabled = true; } // ============= // log functions // ============= /** * main log method * @param logLevelArg - the log level * @param logMessageArg - the log message * @param logDataArg - any additional log data * @param correlationArg - info about corrleations */ async log(logLevelArg, logMessageArg, logDataArg, correlationArg) { correlationArg = { ...{ id: plugins.isounique.uni(), type: 'none', instance: this.uniInstanceId, }, ...correlationArg, }; if (this.consoleEnabled) { this.safeConsoleLog(`${logLevelArg}: ${logMessageArg}`); } const logPackage = { timestamp: Date.now(), type: 'log', context: this.logContext, level: logLevelArg, correlation: correlationArg, message: logMessageArg, }; if (logDataArg) { logPackage.data = logDataArg; } await this.logRouter.routeLog(logPackage); } increment(logLevelArg, logMessageArg, logDataArg, correlationArg = { id: plugins.isounique.uni(), type: 'none', }) { if (this.consoleEnabled) { this.safeConsoleLog(`INCREMENT: ${logLevelArg}: ${logMessageArg}`); } this.logRouter.routeLog({ timestamp: Date.now(), type: 'increment', context: this.logContext, level: logLevelArg, message: logMessageArg, correlation: correlationArg, }); } async handleLog(logPackageArg) { await this.logRouter.routeLog(logPackageArg); } safeConsoleLog(logLine) { console.log(`LOG => ${new Date().getHours()}:${new Date().getMinutes()}:${new Date().getSeconds()} => ${logLine}`); } createLogGroup(transactionId = 'none') { return new LogGroup(this, transactionId); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRsb2cuY2xhc3Nlcy5zbWFydGxvZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0bG9nLmNsYXNzZXMuc21hcnRsb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDNUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBTzFELE1BQU0sT0FBTyxRQUFRO0lBQ25CLFNBQVM7SUFDRixNQUFNLENBQUMsbUJBQW1CLENBQy9CLFVBQWdFO1FBRWhFLE9BQU8sSUFBSSxRQUFRLENBQUM7WUFDbEIsVUFBVSxFQUFFO2dCQUNWLFVBQVU7YUFDWDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFZTSxpQkFBaUIsQ0FBQyxpQkFBNkQ7UUFDcEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxZQUFZLFVBQXNDO1FBVjNDLGtCQUFhLEdBQVcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUkvQyxjQUFTLEdBQUcsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQU9sQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxVQUFVLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQztJQUMvRCxDQUFDO0lBRUQsZUFBZTtJQUNmLGVBQWU7SUFDZixlQUFlO0lBRWY7O09BRUc7SUFDSSxhQUFhLENBQUMsVUFBb0M7UUFDdkQsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDOUQsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztZQUNuQyxNQUFNLG1C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