@akala/core
Version:
82 lines • 3.67 kB
JavaScript
/**
* Centralized logging system with namespace-based routing
* @packageDocumentation
*/
import { LogLevels } from './shared.js';
import { process } from '../middlewares/shared.js';
import { LoggerRoute } from './sync/route.js';
import { LoggerRouteAsync } from './async/route.js';
export * from './shared.js';
export * from './sync/console.js';
export * from './sync/debug.js';
export * from './sync/multicast.js';
export * from './sync/route.js';
export * from './sync/wrapper.js';
export * from './async/web-stream.js';
export * from './async/sync.js';
export * from './async/multicast.js';
export * from './async/route.js';
export * from './async/wrapper.js';
export class LoggerWrapper {
logger;
maxLevel;
process(log, ...values) {
try {
return process(log, this.maxLevel, this.namespaces, ...values);
}
catch (e) {
if (e)
throw e;
throw new Error('no logger could handle this message. Are you missing to call configureLogging ?', { cause: e });
}
}
tryProcess(log, ...values) {
try {
return process(log, this.maxLevel, this.namespaces, ...values);
}
catch (e) {
if (e)
throw e;
}
}
error(...values) { return this.process(this.logger.error, ...values); }
warn(...values) { return this.process(this.logger.warn, ...values); }
help(...values) { return this.process(this.logger.help, ...values); }
data(...values) { return this.process(this.logger.data, ...values); }
info(...values) { return this.process(this.logger.info, ...values); }
debug(...values) { return this.process(this.logger.debug, ...values); }
prompt(...values) { return this.process(this.logger.prompt, ...values); }
verbose(...values) { return this.process(this.logger.verbose, ...values); }
input(...values) { return this.process(this.logger.input, ...values); }
silly(...values) { return this.process(this.logger.silly, ...values); }
tryError(...values) { return this.tryProcess(this.logger.error, ...values); }
tryWarn(...values) { return this.tryProcess(this.logger.warn, ...values); }
tryHelp(...values) { return this.tryProcess(this.logger.help, ...values); }
tryData(...values) { return this.tryProcess(this.logger.data, ...values); }
tryInfo(...values) { return this.tryProcess(this.logger.info, ...values); }
tryDebug(...values) { return this.tryProcess(this.logger.debug, ...values); }
tryPrompt(...values) { return this.tryProcess(this.logger.prompt, ...values); }
tryVerbose(...values) { return this.tryProcess(this.logger.verbose, ...values); }
tryInput(...values) { return this.tryProcess(this.logger.input, ...values); }
trySilly(...values) { return this.tryProcess(this.logger.silly, ...values); }
constructor(logger, maxLevel, namespace) {
this.logger = logger;
this.maxLevel = maxLevel;
this.namespaces = namespace?.split(':') ?? [];
}
namespaces;
pipe(logger) {
return this.logger.pipe(logger);
}
use(namespace, logLevel) {
namespace.split(':').reduce((previous, current) => previous.use(current), this.logger);
// const route = this.logger.use(namespace) as TLogger;
return new LoggerWrapper(this.logger, logLevel ?? this.maxLevel, namespace);
}
isEnabled(logLevel) {
return logLevel <= this.maxLevel;
}
}
export const logger = new LoggerWrapper(new LoggerRoute('*'), LogLevels.info);
export const asyncLogger = new LoggerWrapper(new LoggerRouteAsync('*'), LogLevels.info);
//# sourceMappingURL=index.browser.js.map