UNPKG

kuzzle-logger

Version:

Logger package for Kuzzle backend, JS SDK, and any related module (like gateways).

123 lines 4.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Presets = void 0; class Presets { static expandPresets(transport, globalSettings) { // config is a TransportPresetOptions if ('preset' in transport) { return this.getPresetConfig(transport, globalSettings); } // config is a TransportMultiOptionsWithPreset if ('targets' in transport) { return { ...transport, targets: transport.targets.map((t) => { if ('preset' in t) { return this.expandPresets(t, globalSettings); } return t; }), }; } // config is a TransportSingleOptions or a TransportPipelineOptions return transport; } static getPresetConfig(transport, globalSettings) { const preset = transport.preset; switch (preset) { case 'stdout': { const env = process.env.NODE_ENV ?? 'development'; if (env === 'development') { return { level: transport.level ?? 'info', options: { minimumLevel: 'trace', }, target: 'pino-pretty', }; } return { level: transport.level ?? 'info', options: { destination: 1 }, target: 'pino/file', }; } case 'kuzzle-elasticsearch': { const addKuzzleInfo = transport.presetOptions.addKuzzleInfo ?? true; const kuzzleInfo = addKuzzleInfo ? { _kuzzle_info: { author: -1, createdAt: '{{ currentDate }}', updatedAt: '{{ currentDate }}', updater: -1, }, } : {}; return { level: transport.level ?? 'info', pipeline: [ { options: { additionalBindings: { ...kuzzleInfo, }, serviceName: globalSettings.serviceName, }, target: 'pino-transport-ecs', }, { options: { esVersion: transport.presetOptions.esVersion ?? 8, index: transport.presetOptions.index ?? '&platform.logs', node: transport.presetOptions.node, }, target: 'pino-elasticsearch', }, ], }; } case 'loki': { return { level: transport.level ?? 'info', options: { batching: transport.presetOptions.batching ?? true, headers: transport.presetOptions.headers ?? {}, host: transport.presetOptions.host, interval: transport.presetOptions.interval ?? 1, labels: { ...(transport.presetOptions.labels ?? {}), service_name: globalSettings.serviceName, }, levelMap: transport.presetOptions.levelMap ?? { 10: 'trace', 20: 'debug', 30: 'info', 40: 'warning', 50: 'error', 60: 'fatal', }, propsToLabels: transport.presetOptions.propsToLabels ?? [], }, target: 'pino-loki', }; } case 'file': { return { level: transport.level ?? 'info', options: { append: transport.presetOptions.append ?? true, destination: transport.presetOptions.destination, mkdir: transport.presetOptions.mkdir ?? true, }, target: 'pino/file', }; } default: { throw new Error(`Unknown preset: ${preset}`); } } } } exports.Presets = Presets; //# sourceMappingURL=Presets.js.map