From 108bb2b3193d8021009db5521a9cd76388fb68f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20J=C3=A4derberg?= Date: Fri, 24 Oct 2025 13:28:56 +0000 Subject: [PATCH] Merged in chore/create-logger-tests (pull request #2996) Tests for common/logger * chore: add tests for createLogger * chore: add tests for createLogger Approved-by: Linus Flood --- .../index.ts} | 26 +++---------------- .../common/logger/createLogger/logLevels.ts | 2 ++ .../logger/createLogger/minimumLogLevel.ts | 19 ++++++++++++++ .../logger/createLogger/shouldLog.test.ts | 22 ++++++++++++++++ .../common/logger/createLogger/shouldLog.ts | 5 ++++ packages/common/package.json | 2 +- 6 files changed, 53 insertions(+), 23 deletions(-) rename packages/common/logger/{createLogger.ts => createLogger/index.ts} (70%) create mode 100644 packages/common/logger/createLogger/logLevels.ts create mode 100644 packages/common/logger/createLogger/minimumLogLevel.ts create mode 100644 packages/common/logger/createLogger/shouldLog.test.ts create mode 100644 packages/common/logger/createLogger/shouldLog.ts diff --git a/packages/common/logger/createLogger.ts b/packages/common/logger/createLogger/index.ts similarity index 70% rename from packages/common/logger/createLogger.ts rename to packages/common/logger/createLogger/index.ts index cd62a96d1..7c60c62ac 100644 --- a/packages/common/logger/createLogger.ts +++ b/packages/common/logger/createLogger/index.ts @@ -1,28 +1,10 @@ import * as Sentry from "@sentry/nextjs" import { flatten } from "flat" -const logLevels = ["debug", "info", "warn", "error"] as const -const minimumLogLevel = (() => { - const configuredMinimumLogLevel = ( - (process.env.MINIMUM_LOG_LEVEL || - process.env.NEXT_PUBLIC_MINIMUM_LOG_LEVEL) ?? - "info" - ).toLowerCase() as (typeof logLevels)[number] +import { minimumLogLevel } from "./minimumLogLevel" +import { shouldLog } from "./shouldLog" - if (!logLevels.includes(configuredMinimumLogLevel)) { - console.warn( - `Invalid log level configured: ${configuredMinimumLogLevel}, defaulting to 'info'` - ) - - return "info" - } - - return configuredMinimumLogLevel -})() - -function shouldLog(level: (typeof logLevels)[number]) { - return logLevels.indexOf(level) >= logLevels.indexOf(minimumLogLevel) -} +import type { logLevels } from "./logLevels" function getLogValue(args: unknown[]): Record | undefined { if (!args || args.length === 0) { @@ -55,7 +37,7 @@ export function createLogger(loggerPrefix: string | (() => Promise)) { message: string, ...args: unknown[] ) { - if (!shouldLog(level)) { + if (!shouldLog(level, minimumLogLevel)) { return } diff --git a/packages/common/logger/createLogger/logLevels.ts b/packages/common/logger/createLogger/logLevels.ts new file mode 100644 index 000000000..5d112e1c1 --- /dev/null +++ b/packages/common/logger/createLogger/logLevels.ts @@ -0,0 +1,2 @@ +export const logLevels = ["debug", "info", "warn", "error"] as const +export type LogLevel = (typeof logLevels)[number] diff --git a/packages/common/logger/createLogger/minimumLogLevel.ts b/packages/common/logger/createLogger/minimumLogLevel.ts new file mode 100644 index 000000000..b0b40e837 --- /dev/null +++ b/packages/common/logger/createLogger/minimumLogLevel.ts @@ -0,0 +1,19 @@ +import { logLevels } from "./logLevels" + +export const minimumLogLevel = (() => { + const configuredMinimumLogLevel = ( + (process.env.MINIMUM_LOG_LEVEL || + process.env.NEXT_PUBLIC_MINIMUM_LOG_LEVEL) ?? + "info" + ).toLowerCase() as (typeof logLevels)[number] + + if (!logLevels.includes(configuredMinimumLogLevel)) { + console.warn( + `Invalid log level configured: ${configuredMinimumLogLevel}, defaulting to 'info'` + ) + + return "info" + } + + return configuredMinimumLogLevel +})() diff --git a/packages/common/logger/createLogger/shouldLog.test.ts b/packages/common/logger/createLogger/shouldLog.test.ts new file mode 100644 index 000000000..f05a9b5b3 --- /dev/null +++ b/packages/common/logger/createLogger/shouldLog.test.ts @@ -0,0 +1,22 @@ +import { describe, expect, it } from "vitest" + +import { shouldLog } from "./shouldLog" + +describe("shouldLog", () => { + it("returns true when log level is higher or equal to minimum", () => { + expect(shouldLog("info", "debug")).toBe(true) + expect(shouldLog("info", "info")).toBe(true) + expect(shouldLog("warn", "info")).toBe(true) + expect(shouldLog("warn", "warn")).toBe(true) + expect(shouldLog("error", "error")).toBe(true) + }) + + it("returns false when log level is lower than minimum", () => { + expect(shouldLog("debug", "info")).toBe(false) + expect(shouldLog("debug", "warn")).toBe(false) + expect(shouldLog("debug", "error")).toBe(false) + expect(shouldLog("info", "warn")).toBe(false) + expect(shouldLog("info", "error")).toBe(false) + expect(shouldLog("warn", "error")).toBe(false) + }) +}) diff --git a/packages/common/logger/createLogger/shouldLog.ts b/packages/common/logger/createLogger/shouldLog.ts new file mode 100644 index 000000000..13abcf169 --- /dev/null +++ b/packages/common/logger/createLogger/shouldLog.ts @@ -0,0 +1,5 @@ +import { type LogLevel, logLevels } from "./logLevels" + +export function shouldLog(level: LogLevel, minimumLogLevel: LogLevel) { + return logLevels.indexOf(level) >= logLevels.indexOf(minimumLogLevel) +} diff --git a/packages/common/package.json b/packages/common/package.json index d8ea5afb2..be057a73f 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -37,7 +37,7 @@ "./global.d.ts": "./global.d.ts", "./hooks/*": "./hooks/*.ts", "./logger": "./logger/index.ts", - "./logger/*": "./logger/*.ts", + "./logger/createLogger": "./logger/createLogger/index.ts", "./stores/*": "./stores/*.ts", "./telemetry": "./telemetry/index.ts", "./tokenManager": "./tokenManager/index.ts",