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
This commit is contained in:
@@ -1,28 +1,10 @@
|
|||||||
import * as Sentry from "@sentry/nextjs"
|
import * as Sentry from "@sentry/nextjs"
|
||||||
import { flatten } from "flat"
|
import { flatten } from "flat"
|
||||||
|
|
||||||
const logLevels = ["debug", "info", "warn", "error"] as const
|
import { minimumLogLevel } from "./minimumLogLevel"
|
||||||
const minimumLogLevel = (() => {
|
import { shouldLog } from "./shouldLog"
|
||||||
const configuredMinimumLogLevel = (
|
|
||||||
(process.env.MINIMUM_LOG_LEVEL ||
|
|
||||||
process.env.NEXT_PUBLIC_MINIMUM_LOG_LEVEL) ??
|
|
||||||
"info"
|
|
||||||
).toLowerCase() as (typeof logLevels)[number]
|
|
||||||
|
|
||||||
if (!logLevels.includes(configuredMinimumLogLevel)) {
|
import type { logLevels } from "./logLevels"
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getLogValue(args: unknown[]): Record<string, unknown> | undefined {
|
function getLogValue(args: unknown[]): Record<string, unknown> | undefined {
|
||||||
if (!args || args.length === 0) {
|
if (!args || args.length === 0) {
|
||||||
@@ -55,7 +37,7 @@ export function createLogger(loggerPrefix: string | (() => Promise<string>)) {
|
|||||||
message: string,
|
message: string,
|
||||||
...args: unknown[]
|
...args: unknown[]
|
||||||
) {
|
) {
|
||||||
if (!shouldLog(level)) {
|
if (!shouldLog(level, minimumLogLevel)) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
2
packages/common/logger/createLogger/logLevels.ts
Normal file
2
packages/common/logger/createLogger/logLevels.ts
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
export const logLevels = ["debug", "info", "warn", "error"] as const
|
||||||
|
export type LogLevel = (typeof logLevels)[number]
|
||||||
19
packages/common/logger/createLogger/minimumLogLevel.ts
Normal file
19
packages/common/logger/createLogger/minimumLogLevel.ts
Normal file
@@ -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
|
||||||
|
})()
|
||||||
22
packages/common/logger/createLogger/shouldLog.test.ts
Normal file
22
packages/common/logger/createLogger/shouldLog.test.ts
Normal file
@@ -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)
|
||||||
|
})
|
||||||
|
})
|
||||||
5
packages/common/logger/createLogger/shouldLog.ts
Normal file
5
packages/common/logger/createLogger/shouldLog.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import { type LogLevel, logLevels } from "./logLevels"
|
||||||
|
|
||||||
|
export function shouldLog(level: LogLevel, minimumLogLevel: LogLevel) {
|
||||||
|
return logLevels.indexOf(level) >= logLevels.indexOf(minimumLogLevel)
|
||||||
|
}
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
"./global.d.ts": "./global.d.ts",
|
"./global.d.ts": "./global.d.ts",
|
||||||
"./hooks/*": "./hooks/*.ts",
|
"./hooks/*": "./hooks/*.ts",
|
||||||
"./logger": "./logger/index.ts",
|
"./logger": "./logger/index.ts",
|
||||||
"./logger/*": "./logger/*.ts",
|
"./logger/createLogger": "./logger/createLogger/index.ts",
|
||||||
"./stores/*": "./stores/*.ts",
|
"./stores/*": "./stores/*.ts",
|
||||||
"./telemetry": "./telemetry/index.ts",
|
"./telemetry": "./telemetry/index.ts",
|
||||||
"./tokenManager": "./tokenManager/index.ts",
|
"./tokenManager": "./tokenManager/index.ts",
|
||||||
|
|||||||
Reference in New Issue
Block a user