WoodChuck is a versatile logging library for TypeScript/JavaScript that simplifies the process of logging messages within your applications and is built with structured event data at its heart. It provides a flexible and extensible logging framework to help you track and understand the flow of your application.
npm i @jacraig/woodchuck
import { Logger, ConsoleSink } from "@jacraig/woodchuck";
Logger.configure().minimumLevel("Information").writeTo(new ConsoleSink());
Logger.verbose("This is a verbose message: {key}", { key: "value" });
Logger.debug("This is a debug message: {key}", { key: "value" });
Logger.information("This is an information message: {key}", { key: "value" });
Logger.warning("This is a warning message: {key}", { key: "value" });
Logger.error(
"This is an error message: {key}",
{ key: "value" },
new Error("This is an error")
);
Logger.fatal(
"This is a fatal message: {key}",
{ key: "value" },
new Error("This is a fatal error")
);
Logger.configure()
.enrichWith(new UserAgentEnricher())
.enrichWith(new UrlEnricher())
.enrichWith(new CallerEnricher())
.formatUsing(new DefaultFormatter())
.minimumLevel("Information")
.writeTo(new ConsoleSink());
import { LogEventEnricher, LogEvent } from "@jacraig/woodchuck";
export class MyCustomPlugin implements LogEventEnricher {
public enrich(logEvent: LogEvent): void {
logEvent.properties["myProperty"] =
"Something, something, something, dark side";
}
}
import {
Logger,
ConsoleSink,
BatchedSink,
BatchedSinkOptions,
} from "@jacraig/woodchuck";
Logger.configure()
.minimumLevel("Debug")
.writeTo(new ConsoleSink())
.writeTo(new BatchedSink(new ConsoleSink(), new BatchedSinkOptions()));
import { Logger, LogEventEnricher } from "@jacraig/woodchuck";
class MyEnricher implements LogEventEnricher {
enrich(event) {
event.properties["custom"] = "myValue";
}
}
Logger.configure().enrichWith(new MyEnricher()).writeTo(new ConsoleSink());
Logger.debug("With custom property");
import { Logger, LogFilter } from "@jacraig/woodchuck";
class OnlyErrorsFilter implements LogFilter {
filter(event) {
return event.level === "Error";
}
}
Logger.configure().filter(new OnlyErrorsFilter()).writeTo(new ConsoleSink());
Logger.error("This will be logged");
Logger.information("This will NOT be logged");
Logger.information("User logged in", { userId: 123, userName: "alice" });
If you'd like to contribute to WoodChuck, please follow our contribution guidelines.
WoodChuck is licensed under the Apache 2 License.