UNPKG

@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
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