@webda/core
Version:
Expose API with Lambda
121 lines • 3.49 kB
JavaScript
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