Merged in feat/sw-3560-sanitize2 (pull request #3001)

feat(SW-3560): send parameters to sentry logs

* feat(SW-3560): send parameters to sentry logs

* Use flatten instead of sanitize when logging


Approved-by: Joakim Jäderberg
This commit is contained in:
Linus Flood
2025-10-23 11:30:15 +00:00
parent a00cf8d327
commit 6374085a36
3 changed files with 70 additions and 157 deletions

View File

@@ -1,4 +1,5 @@
import * as Sentry from "@sentry/nextjs"
import { flatten } from "flat"
const logLevels = ["debug", "info", "warn", "error"] as const
const minimumLogLevel = (() => {
@@ -23,6 +24,19 @@ function shouldLog(level: (typeof logLevels)[number]) {
return logLevels.indexOf(level) >= logLevels.indexOf(minimumLogLevel)
}
function getLogValue(args: unknown[]): Record<string, unknown> | undefined {
if (!args || args.length === 0) {
return undefined
}
if (args.length === 1 && typeof args[0] === "object") {
return (args[0] as Record<string, unknown>) ?? undefined
}
if (args.length === 1) {
return { value: args[0] }
}
return flatten(args)
}
export function createLogger(loggerPrefix: string | (() => Promise<string>)) {
const asyncWrapper: () => Promise<string> =
typeof loggerPrefix === "string" ? async () => loggerPrefix : loggerPrefix
@@ -45,9 +59,12 @@ export function createLogger(loggerPrefix: string | (() => Promise<string>)) {
return
}
Sentry.logger[level](`${await getLoggerPrefix()} ${message}`.trim(), {
...args,
})
const logValue = getLogValue(args)
Sentry.logger[level](
`${await getLoggerPrefix()} ${message}`.trim(),
logValue
)
console[level](`${await getLoggerPrefix()} ${message}`.trim(), ...args)
}
@@ -55,7 +72,6 @@ export function createLogger(loggerPrefix: string | (() => Promise<string>)) {
async debug(message: string, ...args: unknown[]): Promise<void> {
await log("debug", message, ...args)
},
async info(message: string, ...args: unknown[]): Promise<void> {
await log("info", message, ...args)
},