about summary refs log tree commit diff
path: root/src/logger/index.ts
diff options
context:
space:
mode:
authorEric Bailey <git@esb.lol>2025-02-28 17:13:49 -0600
committerGitHub <noreply@github.com>2025-02-28 17:13:49 -0600
commit96f4f6359add6a4f2a37df8f17cf3f2f59f0a2a6 (patch)
treeafabc0fe9628a66f1db69f9e07b824db725aa6e1 /src/logger/index.ts
parent9e59a2eef2f82511a9a9a056dbdb0c62fe2f61c6 (diff)
downloadvoidsky-96f4f6359add6a4f2a37df8f17cf3f2f59f0a2a6.tar.zst
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)
Diffstat (limited to 'src/logger/index.ts')
-rw-r--r--src/logger/index.ts21
1 files changed, 21 insertions, 0 deletions
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<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 () => {