about summary refs log tree commit diff
path: root/src/logger/index.ts
diff options
context:
space:
mode:
authorEric Bailey <git@esb.lol>2023-11-27 12:28:21 -0600
committerGitHub <noreply@github.com>2023-11-27 10:28:21 -0800
commit1dc017367edf08352284cb9a2e0d5b75d5d93691 (patch)
tree1db651058c8c914010b36ac50bfe2256cc466829 /src/logger/index.ts
parent675875531623750d0063db0aff8ec2580461e20b (diff)
downloadvoidsky-1dc017367edf08352284cb9a2e0d5b75d5d93691.tar.zst
Make sure logger serializes errors (#2001)
Diffstat (limited to 'src/logger/index.ts')
-rw-r--r--src/logger/index.ts21
1 files changed, 17 insertions, 4 deletions
diff --git a/src/logger/index.ts b/src/logger/index.ts
index 3de2b9046..9f79a7812 100644
--- a/src/logger/index.ts
+++ b/src/logger/index.ts
@@ -90,6 +90,16 @@ const enabledLogLevels: {
   [LogLevel.Error]: [LogLevel.Error],
 }
 
+export function prepareMetadata(metadata: Metadata): Metadata {
+  return Object.keys(metadata).reduce((acc, key) => {
+    let value = metadata[key]
+    if (value instanceof Error) {
+      value = value.toString()
+    }
+    return {...acc, [key]: value}
+  }, {})
+}
+
 /**
  * Used in dev mode to nicely log to the console
  */
@@ -100,7 +110,8 @@ export const consoleTransport: Transport = (
   timestamp,
 ) => {
   const extra = Object.keys(metadata).length
-    ? ' ' + JSON.stringify(metadata, null, '  ')
+    ? // don't prepareMetadata here, in dev we want the stack trace
+      ' ' + JSON.stringify(metadata, null, '  ')
     : ''
   const log = {
     [LogLevel.Debug]: console.debug,
@@ -119,6 +130,8 @@ export const sentryTransport: Transport = (
   {type, tags, ...metadata},
   timestamp,
 ) => {
+  const meta = prepareMetadata(metadata)
+
   /**
    * If a string, report a breadcrumb
    */
@@ -135,7 +148,7 @@ export const sentryTransport: Transport = (
 
     Sentry.addBreadcrumb({
       message,
-      data: metadata,
+      data: meta,
       type: type || 'default',
       level: severity,
       timestamp: timestamp / 1000, // Sentry expects seconds
@@ -155,7 +168,7 @@ export const sentryTransport: Transport = (
       Sentry.captureMessage(message, {
         level: messageLevel,
         tags,
-        extra: metadata,
+        extra: meta,
       })
     }
   } else {
@@ -164,7 +177,7 @@ export const sentryTransport: Transport = (
      */
     Sentry.captureException(message, {
       tags,
-      extra: metadata,
+      extra: meta,
     })
   }
 }