mirror of
https://git.tuxpa.in/a/code-server.git
synced 2024-12-26 12:15:26 +00:00
8a4da542ae
* Add GCP logging extender * Minor version bump for new API * Update packages/logger/src/logger.ts Co-Authored-By: kylecarbs <kyle@kwc.io>
64 lines
1.3 KiB
TypeScript
64 lines
1.3 KiB
TypeScript
import * as gcl from "@google-cloud/logging";
|
|
import { Extender, logger, field } from "./logger";
|
|
|
|
export const createStackdriverExtender = (projectId: string, logId: string): Extender => {
|
|
enum GcpLogSeverity {
|
|
DEFAULT = 0,
|
|
DEBUG = 100,
|
|
INFO = 200,
|
|
NOTICE = 300,
|
|
WARNING = 400,
|
|
ERROR = 500,
|
|
CRITICAL = 600,
|
|
ALERT = 700,
|
|
EMERGENCY = 800,
|
|
}
|
|
|
|
const logging = new gcl.Logging({
|
|
autoRetry: true,
|
|
projectId,
|
|
});
|
|
|
|
const log = logging.log(logId);
|
|
const convertSeverity = (severity: "trace" | "info" | "warn" | "debug" | "error"): GcpLogSeverity => {
|
|
switch (severity) {
|
|
case "trace":
|
|
case "debug":
|
|
return GcpLogSeverity.DEBUG;
|
|
case "info":
|
|
return GcpLogSeverity.INFO;
|
|
case "error":
|
|
return GcpLogSeverity.ERROR;
|
|
case "warn":
|
|
return GcpLogSeverity.WARNING;
|
|
}
|
|
};
|
|
|
|
return (options): void => {
|
|
const severity = convertSeverity(options.type);
|
|
// tslint:disable-next-line:no-any
|
|
const metadata = {} as any;
|
|
if (options.fields) {
|
|
options.fields.forEach((f) => {
|
|
if (!f) {
|
|
return;
|
|
}
|
|
metadata[f.identifier] = f.value;
|
|
});
|
|
}
|
|
|
|
const entry = log.entry({
|
|
// tslint:disable-next-line:no-any
|
|
severity: severity as any,
|
|
}, {
|
|
...metadata,
|
|
message: options.message,
|
|
});
|
|
|
|
log.write(entry).catch((ex) => {
|
|
logger.named("GCP").error("Failed to log", field("error", ex));
|
|
});
|
|
};
|
|
|
|
};
|