Files
web/packages/common/logger/createLogger.ts
Joakim Jäderberg ae7a62c88f Merged in feature/SW-3149-send-logs-to-sentry (pull request #2802)
Feature/SW-3149 send logs to sentry

* Use sentry for logging

* .

* fix(SW-3149) Send logs to Sentry

* remove experimental flag for logs

* add sentry settings for partner-sas

* feat(SW-3108): Added external link option to top primary button on content/collection page

Approved-by: Matilda Landström

* fix(BOOK-152): Removed old header references inside useStickyPosition hook to fix offset issue for the sitewide alert

Approved-by: Matilda Landström

* Merged in fix/LOY-360-team-member-text-for-retired-employees (pull request #2799)

fix(LOY-360): improve text for retired employees

* fix(LOY-360): improve text for retired employees


Approved-by: Erik Tiekstra
Approved-by: Matilda Landström

* Merged in fix/STAY-67-redirect-to-webview-after-gla (pull request #2795)

fix(STAY-67): redirect to webview after guarantee on my stay

* fix(STAY-67): redirect to webview after guarantee on my stay

* fix(STAY-67): add callback page for guarantee on webview


Approved-by: Linus Flood

* feat(SW-3152): Respecting image aspect ratio inside image gallery/lightbox

* feat(SW-3152): Respecting image aspect ratio inside image gallery/lightbox
* feat(BOOK-144): Make image clickable instead of a button to avoid being able to click outside of the image area

Approved-by: Bianca Widstam
Approved-by: Chuma Mcphoy (We Ahead)

* Merged in fix/BOOK-127-translate-validation-text (pull request #2800)

fix(BOOK-127): translate terms required message

* fix(BOOK-127): translate terms required message


Approved-by: Erik Tiekstra

* Merged in feat/LOY-354-L7-Progress-Card (pull request #2786)

Feat/LOY-354 L7 Progress Card

* feat(LOY-354): Add Trophy icon

* fix(LOY-354): include new tierPoints value

* feat(LOY-354): L7 Progress Level Card support

* refactor(LOY-354): Refactoring of component structure

* fix(LOY-354): Remove intl prop drilling

* fix(LOY-354): cleanup progress section code


Approved-by: Erik Tiekstra

* Merged in fix/BOOK-132-tracking-breakfast (pull request #2803)

fix(BOOK-132): add breakfastOption tracking

* fix(BOOK-132): add breakfastOption tracking


Approved-by: Joakim Jäderberg

* Merged in fix/enter-details-errors-missing (pull request #2806)

fix: Add missing messages to BookingFlowInput errors

* Add missing messages to BookingFlowInput errors

* Fix errors

* zippy zip

* phoney


Approved-by: Bianca Widstam
Approved-by: Joakim Jäderberg

* Merged in feature/copy-static-files-via-build-scripts (pull request #2798)

SW-3467 Copy static files via build scripts

* add file copy script and add all fonts to design-system

* add file copy script and add all fonts to design-system

* add file copy script and add all fonts to design-system

* remove fonts that will be copied via build scripts

* wip

* update paths to shared files

* update material-symbol script

* merge

* fix missing shared segment for path in fonts.css


Approved-by: Linus Flood

* Merged in feat/SW-2999-cleanup (pull request #2810)

feat(SW-2999): cleanup current web

* feat(SW-2999): cleanup current web

* Merge master

* Removed unused fonts


Approved-by: Joakim Jäderberg

* Merge branch 'master' of bitbucket.org:scandic-swap/web into feature/SW-3149-send-logs-to-sentry

* Merge branch 'master' of bitbucket.org:scandic-swap/web into feature/SW-3149-send-logs-to-sentry

* merge


Approved-by: Linus Flood
2025-09-18 07:59:44 +00:00

70 lines
1.8 KiB
TypeScript

import * as Sentry from "@sentry/nextjs"
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]
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)
}
export function createLogger(loggerPrefix: string | (() => Promise<string>)) {
const asyncWrapper: () => Promise<string> =
typeof loggerPrefix === "string" ? async () => loggerPrefix : loggerPrefix
const getLoggerPrefix = async () => {
const prefix = await asyncWrapper()
if (!prefix) {
return ""
}
return `[${prefix}]`
}
async function log(
level: (typeof logLevels)[number],
message: string,
...args: unknown[]
) {
if (!shouldLog(level)) {
return
}
Sentry.logger[level](`${await getLoggerPrefix()} ${message}`.trim(), {
...args,
})
console[level](`${await getLoggerPrefix()} ${message}`.trim(), ...args)
}
return {
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)
},
async warn(message: string, ...args: unknown[]): Promise<void> {
await log("warn", message, ...args)
},
async error(message: string, ...args: unknown[]): Promise<void> {
await log("error", message, ...args)
},
}
}