A test and demonstration tool for generating and exploring logs in both formatted and JSON styles, integrated with Grafana Loki via Docker.
- Node.js version 24 or higher
This package is available in the Node Package Repository and can be easily installed with npm or yarn
$ npm i @sigyn/lab
# or
$ yarn add @sigyn/labimport { run } from "@sigyn/lab";
await run({
count: 200,
labels: {
app: "demo-app"
}
});
// Grafana Loki ready on http://localhost:3000 with 200 random logs.Run Grafana + Loki via Docker (using testcontainers) with multiple logs.
See LogGenerator for options.
Default options:
{
count: 500,
labels: { app: "demo" }
}The LogGenerator class is responsible for generating logs in two different styles: formatted strings and JSON objects. These logs are designed for testing, demonstrations, and integration with Grafana Loki.
new LogGenerator(options: LogGeneratorOptions)Constructor parameters
options (optional): An object to customize log generation:
options.mode(optional): Specifies the style of the logs. Can be:"formated": Generates logs as formatted strings."json": G**enerates logs as JSON objects."random"(default): Randomly chooses between"formated"and"json"for each log.
options.count(optional): The number of logs to generate. Default is 100.options.labels(optional): An object containing custom labels to associate with each log stream. No labels by default.options.startUnixEpoch(optional): The start timestamp for logs in nanoseconds. Default is one hour before the current time.options.endUnixEpoch(optional): The end timestamp for logs in nanoseconds. Default is the current time.
Generates logs based on the provided options. This method is a generator function that yields individual log entries.
Example usage:
const generator = new LogGenerator({
count: 10,
mode: "json"
});
const logs = [...generator.generate()];
console.log(logs);interface LogGeneratorOptions {
mode?: Mode;
count?: number;
labels?: Record<string, string>;
startUnixEpoch?: number;
endUnixEpoch?: number;
}MIT