UNPKG

@loglayer/transport-google-cloud-logging

Version:

Google Cloud Logging (Stackdriver) transport for the LogLayer logging library.

52 lines (50 loc) 1.51 kB
import { BaseTransport, LogLevel } from "@loglayer/transport"; //#region src/GoogleCloudLoggingTransport.ts var GoogleCloudLoggingTransport = class extends BaseTransport { rootLevelData; rootLevelMetadataFields; constructor(config) { super(config); this.rootLevelData = config.rootLevelData || {}; this.rootLevelMetadataFields = config.rootLevelMetadataFields ?? []; } mapLogLevel(level) { switch (level) { case LogLevel.fatal: return "CRITICAL"; case LogLevel.error: return "ERROR"; case LogLevel.warn: return "WARNING"; case LogLevel.info: return "INFO"; case LogLevel.debug: return "DEBUG"; case LogLevel.trace: return "DEBUG"; default: return "DEFAULT"; } } extractLogEntryFields(data) { const keys = Object.keys(data); const metadata = {}; for (const key of keys) if (this.rootLevelMetadataFields.includes(key)) { metadata[key] = data[key]; delete data[key]; } return metadata; } shipToLogger({ data, hasData, logLevel, messages }) { const safeData = data && hasData ? data : {}; const metadata = this.extractLogEntryFields(safeData); const entry = this.logger.entry({ ...this.rootLevelData, ...metadata, severity: this.mapLogLevel(logLevel), timestamp: /* @__PURE__ */ new Date() }, { ...safeData, message: messages.join(" ") }); this.logger.write(entry); if (data && hasData) return [data, messages]; return [messages]; } }; //#endregion export { GoogleCloudLoggingTransport }; //# sourceMappingURL=index.mjs.map