workerlog
A logging library for workers or servers.

Features
✔ Colorful console logs
✔ CommonJS
✔ ES Modules
✔ TypeScript
Usage
We can create loggers which are essentially nested from their parent.
import { createWorkerLoggerProvider } from "@autoplay/workerlog";
const provider = createWorkerLoggerProvider();
const logger = provider.getLogger()
const appLogger = logger.named("App")
const pageLogger = appLogger.named("Page", page.id)
Downgrading
For example,
const cssLogger = appLogger.downgrade()
cssRenderHelpers.convertBezier(cssLogger, "...")
Configurable with a TypeScript API
Configure what gets logged
import { createWorkerLoggerProvider } from "@autoplay/workerlog";
const provider = createWorkerLoggerProvider();
provider.configureLogging({
consoleStyle: false,
include(source) {
if (source.names.find(n => n.name === "XYZSystem")) {
return {
internal: true
}
}
if (source.names.find(n => n.name === "Rendering")) {
return {
internal: false,
dev: false,
min: Infinity,
}
}
if (source.names.find(n => n.name === "Page" && n.key === "page_ajkwhloieuw8990se")) {
return {
internal: true,
min: 0,
}
}
},
});
Configure how it gets logged
import { createWorkerLoggerProvider, WorkerLoggerLevel } from "@autoplay/workerlog";
const logger = createWorkerLoggerProvider();
logger.configureLogger({
type: "console",
console: console,
style: false,
});
logger.configureLogger({
type: "console",
style: false,
});
logger.configureLogger({
type: "keyed",
keyed(nameAndKeys) {
const prefix = nameAndKeys
.map((a) => (a.key ? `${a.name}#${a.key}` : a.name))
.join(" ");
return {
error(meta, message, args) {
console.error(
meta.category,
WorkerLoggerLevel[meta.level],
prefix,
message,
...(args ? [args] : [])
);
},
warn(meta, message, args) {
console.warn(
meta.category,
WorkerLoggerLevel[meta.level],
prefix,
message,
...(args ? [args] : [])
);
},
debug(meta, message, args) {
console.info(
meta.category,
WorkerLoggerLevel[meta.level],
prefix,
message,
...(args ? [args] : [])
);
},
trace(meta, message, args) {
console.debug(
meta.category,
WorkerLoggerLevel[meta.level],
prefix,
message,
...(args ? [args] : [])
);
},
};
},
});
License
This project is licensed under the terms of the MIT license.