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)
This commit is contained in:
Eric Bailey
2025-02-28 17:13:49 -06:00
committed by GitHub
parent 9e59a2eef2
commit 96f4f6359a
7 changed files with 63 additions and 18 deletions
+21
View File
@@ -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<E extends keyof MetricEvents>(
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 () => {