@nestjs-labs/pino-http-extra
Version:
Enhanced pino-http with OpenTelemetry, Loki, file rotation and enterprise features.
53 lines • 2.07 kB
JavaScript
;
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: {
interval: Number(process.env.LOG_LOKI_INTERVAL) || 10,
maxBufferSize: Number(process.env.LOG_LOKI_INTERVAL) || 5000,
},
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