@fdm-monster/server
Version:
FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.
39 lines (38 loc) • 1.55 kB
JavaScript
import { AppConstants } from "../../server.constants.js";
import { z } from "zod";
import winston from "winston";
import process from "node:process";
import LokiTransport from "winston-loki";
//#region src/handlers/logging/loki-logging.transport.ts
const lokiValidationSchema = z.object({
lokiEnabled: z.boolean(),
lokiAddress: z.string().url(),
lokiTimeoutSeconds: z.coerce.number().positive().default(30),
lokiInterval: z.coerce.number().positive().default(15)
});
function createLokiLoggingTransport(options) {
const lokiConfigValidationResult = lokiValidationSchema.safeParse({
lokiEnabled: process.env[AppConstants.ENABLE_LOKI_LOGGING] === "true",
lokiTimeoutSeconds: process.env[AppConstants.LOKI_TIMEOUT_SECONDS],
lokiAddress: process.env[AppConstants.LOKI_ADDRESS],
lokiInterval: process.env[AppConstants.LOKI_INTERVAL]
});
if (!lokiConfigValidationResult.success || !lokiConfigValidationResult.data.lokiEnabled) return;
return new LokiTransport({
level: options.logLevel ?? "info",
host: lokiConfigValidationResult.data.lokiAddress,
interval: lokiConfigValidationResult.data.lokiInterval,
timeout: lokiConfigValidationResult.data.lokiTimeoutSeconds,
handleExceptions: true,
onConnectionError(error) {
console.debug(`Loki logger enabled, but connection failed. ${error}`);
},
labels: { app: "fdm-monster-server" },
json: false,
useWinstonMetaAsLabels: false,
format: winston.format.json()
});
}
//#endregion
export { createLokiLoggingTransport };
//# sourceMappingURL=loki-logging.transport.js.map