@nestjs-labs/pino-http-extra
Version:
Enhanced pino-http with OpenTelemetry, Loki, file rotation and enterprise features.
51 lines • 1.94 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: 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
;