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
70 lines
1.8 KiB
TypeScript
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)
|
|
},
|
|
}
|
|
}
|