From 96f4f6359add6a4f2a37df8f17cf3f2f59f0a2a6 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Fri, 28 Feb 2025 17:13:49 -0600 Subject: Logger metrics (#7867) * Adjust datalake abstraction (cherry picked from commit 8ba6a8d45b1bd5698afbd06d9e858a91789f0ea6) * Just be really really specific (cherry picked from commit 920198959659329a7f7f7282a1293aaad198d8e3) * Add metric method to logger, replace datalake calls with new method (cherry picked from commit 7a026bbeae75514b64f928d7ff59707c518fd5e5) * Clarify types (cherry picked from commit 422b150deb158a70ef37e8a456d91bf26cd0b1bc) --- src/logger/index.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/logger/index.ts') diff --git a/src/logger/index.ts b/src/logger/index.ts index 410d29bb3..0a50a9d21 100644 --- a/src/logger/index.ts +++ b/src/logger/index.ts @@ -1,6 +1,8 @@ import {nanoid} from 'nanoid/non-secure' +import {logEvent} from '#/lib/statsig/statsig' import {add} from '#/logger/logDump' +import {MetricEvents} from '#/logger/metrics' import {bitdriftTransport} from '#/logger/transports/bitdrift' import {consoleTransport} from '#/logger/transports/console' import {sentryTransport} from '#/logger/transports/sentry' @@ -89,6 +91,25 @@ export class Logger { this.transport({level: LogLevel.Error, message: error, metadata}) } + metric( + event: E & string, + metadata: MetricEvents[E], + options: { + /** + * Optionally also send to StatSig + */ + statsig?: boolean + } = {statsig: false}, + ) { + logEvent(event, metadata, { + lake: !options.statsig, + }) + + for (const transport of this.transports) { + transport(LogLevel.Info, LogContext.Metric, event, metadata, Date.now()) + } + } + addTransport(transport: Transport) { this.transports.push(transport) return () => { -- cgit 1.4.1