@loglayer/transport-google-cloud-logging
Version:
Google Cloud Logging (Stackdriver) transport for the LogLayer logging library.
52 lines (50 loc) • 1.51 kB
JavaScript
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