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.
-
Easy Integration: Simple setup for quick integration into your projects.
-
Customizable Logging Levels: Define and use different logging levels to categorize and filter messages.
-
Extensible Plugins: Extend functionality with plugins for various output formats and destinations.
-
Structured Logging: Log structured event data to make it easier to analyze and understand.
-
Flexible Configuration: Configure the logger with a fluent interface to customize the logging experience.
npm i @jacraig/woodchuck
- Configure the logger with a sink to output to.
import { Logger, ConsoleSink } from '@jacraig/woodchuck';
Logger.configure()
.minimumLevel("Information")
.writeTo(new ConsoleSink())
.build();
- Log messages with different levels:
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"));
- Customize the logger with plugins:
Logger.configure()
.enrichWith(new UserAgentEnricher())
.enrichWith(new UrlEnricher())
.enrichWith(new CallerEnricher())
.formatUsing(new DefaultFormatter())
.minimumLevel("Information")
.writeTo(new ConsoleSink());
- Or build your own plugins:
import { LogEventEnricher, LogEvent } from '@jacraig/woodchuck';
export class MyCustomPlugin implements LogEventEnricher {
public enrich(logEvent: LogEvent): void {
logEvent.properties["myProperty"] = "Something, something, something, dark side";
}
}
If you'd like to contribute to WoodChuck, please follow our contribution guidelines.
WoodChuck is licensed under the Apache 2 License.