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
This commit is contained in:
Joakim Jäderberg
2025-09-18 07:59:44 +00:00
parent c09dc29fee
commit ae7a62c88f
20 changed files with 895 additions and 504 deletions

View File

@@ -57,7 +57,6 @@
"@scandic-hotels/design-system": "workspace:*",
"@scandic-hotels/tracking": "workspace:*",
"@scandic-hotels/trpc": "workspace:*",
"@sentry/nextjs": "^8.41.0",
"@trpc/client": "^11.1.2",
"@vis.gl/react-google-maps": "^1.5.2",
"class-variance-authority": "^0.7.1",
@@ -82,6 +81,7 @@
"zustand": "^4.5.2"
},
"peerDependencies": {
"@sentry/nextjs": "^10",
"next": "^15",
"react": "^19"
},

View File

@@ -1,3 +1,28 @@
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
@@ -11,39 +36,34 @@ export function createLogger(loggerPrefix: string | (() => Promise<string>)) {
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> {
// TODO: Make this configurable
if (process.env.NODE_ENV !== "development") {
return
}
console.debug(
"\x1b[36m%s\x1b[0m",
`${await getLoggerPrefix()} ${message}`.trim(),
...args
)
await log("debug", message, ...args)
},
async info(message: string, ...args: unknown[]): Promise<void> {
// TODO: Make this configurable
if (process.env.NODE_ENV !== "development") {
return
}
console.info(`${await getLoggerPrefix()} ${message}`.trim(), ...args)
await log("info", message, ...args)
},
async warn(message: string, ...args: unknown[]): Promise<void> {
console.warn(
`${await getLoggerPrefix()} [warn] - ${message}`.trim(),
...args
)
await log("warn", message, ...args)
},
async error(message: string, ...args: unknown[]): Promise<void> {
console.error(
`${await getLoggerPrefix()} [error] - ${message}`.trim(),
...args
)
await log("error", message, ...args)
},
}
}

View File

@@ -63,7 +63,7 @@
},
"dependencies": {
"@opentelemetry/api": "^1.9.0",
"@sentry/nextjs": "^8.41.0",
"@sentry/nextjs": "^10.11.0",
"@t3-oss/env-nextjs": "^0.13.4",
"deepmerge": "^4.3.1",
"flat": "^6.0.1",

View File

@@ -164,7 +164,7 @@ export function createCounter(meterName: string, counterName: string) {
const finalAttrs = sanitize(mergedAttrs)
counter.add(1, finalAttrs)
logger.info(`[${fullName}] start:`, finalAttrs)
logger.debug(`[${fullName}] start:`, finalAttrs)
},
/**
@@ -177,7 +177,7 @@ export function createCounter(meterName: string, counterName: string) {
const finalAttrs = sanitize(mergedAttrs)
success.add(1, finalAttrs)
logger.info(`[${fullName}] success:`, finalAttrs)
logger.debug(`[${fullName}] success:`, finalAttrs)
},
/**

View File

@@ -46,7 +46,6 @@
},
"dependencies": {
"@scandic-hotels/common": "workspace:*",
"@sentry/nextjs": "^8.41.0",
"@t3-oss/env-nextjs": "^0.13.4",
"@trpc/client": "^11.1.2",
"@trpc/react-query": "^11.1.2",
@@ -67,6 +66,7 @@
"zod": "^3.24.4"
},
"peerDependencies": {
"@sentry/nextjs": "^10",
"next": "^15",
"react": "^19"
},