UNPKG

@webda/core

Version:

Expose API with Lambda

121 lines 3.49 kB
import { ConsoleLogger, FileLogger, MemoryLogger } from "@webda/workout"; import { Service, ServiceParameters } from "../services/service.js"; export class LoggerServiceParameters extends ServiceParameters { /** * @inheritdoc */ constructor(params) { super(params); // Use the environment variable or fallback to INFO this.logLevel ?? (this.logLevel = process.env["LOG_LEVEL"] || "INFO"); } } /** * LoggerService is useful for inheritance */ export class LoggerService extends Service { } export class MemoryLoggerServiceParameters extends LoggerServiceParameters { } /** * Store logs within memory * * Useful for test and other last logs * @WebdaModda Webda/MemoryLogger */ export class MemoryLoggerService extends LoggerService { constructor(webda, name, params) { super(webda, name, params); this.workoutLogger = new MemoryLogger(webda.getWorkerOutput(), this.parameters.logLevel, this.parameters.limit); } /** * @inheritdoc */ loadParameters(params) { return new MemoryLoggerServiceParameters(params); } } export class ConsoleLoggerServiceParameters extends LoggerServiceParameters { } /** * Log to the console * * Send logs to stdout * * @see @webda/workout.ConsoleLogger * @WebdaModda ConsoleLogger */ export class ConsoleLoggerService extends LoggerService { constructor(webda, name, params) { super(webda, name, params); this.workoutLogger = new ConsoleLogger(webda.getWorkerOutput(), this.parameters.logLevel, this.parameters.format); } /** * @inheritdoc */ loadParameters(params) { return new ConsoleLoggerServiceParameters(params); } } export class FileLoggerServiceParameters extends LoggerServiceParameters { } /** * Save logs into a file * * Can define rotation etc * * @see `@webda/workout FileLogger` * @WebdaModda FileLogger */ export class FileLoggerService extends LoggerService { constructor(webda, name, params) { super(webda, name, params); if (this.parameters.file === undefined) { throw new Error("You must specify a file to log into"); } this.workoutLogger = new FileLogger(webda.getWorkerOutput(), this.parameters.logLevel, this.parameters.file, this.parameters.sizeLimit, this.parameters.format); } /** * @inheritdoc */ loadParameters(params) { return new FileLoggerServiceParameters(params); } } /** * */ export class Logger { constructor(output, clazz) { this.output = output; this.clazz = clazz; } log(level, ...args) { this.logWithContext(level, { class: this.clazz }, ...args); } logWithContext(level, context, ...args) { if (!context.class) { context.class = this.clazz; } this.output.logWithContext(level, context, ...args); } logGroupOpen(name) { this.output.openGroup(name); } logGroupClose() { this.output.closeGroup(); } logProgressStart(uid, total, title = undefined) { this.output.startProgress(uid, total, title); } logProgressIncrement(inc = 1, uid = undefined) { this.output.incrementProgress(inc, uid); } logProgressUpdate(current, uid = undefined, title = undefined) { this.output.updateProgress(current, uid, title); } logTitle(title) { this.output.setTitle(title); } } //# sourceMappingURL=logger.js.map