UNPKG

@nestjs-labs/pino-http-extra

Version:

Enhanced pino-http with OpenTelemetry, Loki, file rotation and enterprise features.

51 lines 1.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createPrettyStreamEntry = createPrettyStreamEntry; exports.createLokiStreamEntry = createLokiStreamEntry; exports.createFileStreamEntry = createFileStreamEntry; exports.getMultiDestinationStream = getMultiDestinationStream; const node_path_1 = __importDefault(require("node:path")); const pino_1 = __importDefault(require("pino")); const pino_loki_1 = require("pino-loki"); const pino_pretty_1 = __importDefault(require("pino-pretty")); const rotating_file_stream_1 = require("rotating-file-stream"); function createPrettyStreamEntry(_app, level) { const stream = (0, pino_pretty_1.default)({ translateTime: false, hideObject: false, colorize: true, }); return { level, stream }; } function createLokiStreamEntry(app, level, lokiOptions) { const stream = (0, pino_loki_1.pinoLoki)({ batching: true, interval: 5, labels: { app, service: app }, replaceTimestamp: true, ...lokiOptions, }); return { level, stream }; } function createFileStreamEntry(_app, level, filepath) { const { base, dir } = node_path_1.default.parse(filepath); const stream = (0, rotating_file_stream_1.createStream)(base, { size: '1G', interval: '1d', compress: 'gzip', path: dir, }); return { level, stream }; } function getMultiDestinationStream(app, level = 'info', filepath, lokiOptions) { const entries = [createPrettyStreamEntry(app, level)]; if (filepath) entries.push(createFileStreamEntry(app, level, filepath)); if (lokiOptions) entries.push(createLokiStreamEntry(app, level, lokiOptions)); return pino_1.default.multistream(entries); } //# sourceMappingURL=streams.js.map