Merged in feature/wrap-logging (pull request #2511)

Feature/wrap logging

* feat: change all logging to go through our own logger function so that we can control log levels

* move packages/trpc to using our own logger

* merge


Approved-by: Linus Flood
This commit is contained in:
Joakim Jäderberg
2025-07-03 12:37:04 +00:00
parent 7e32ed294d
commit daf765f3d5
110 changed files with 681 additions and 441 deletions

View File

@@ -3,6 +3,7 @@ import "server-only"
import { ClientError, type GraphQLClient } from "graphql-request"
import { Lang } from "@scandic-hotels/common/constants/language"
import { createLogger } from "@scandic-hotels/common/logger/createLogger"
import { env } from "../../env/server"
@@ -10,6 +11,7 @@ import type { DocumentNode } from "graphql"
import type { Data } from "../types/requestData"
const requestLogger = createLogger("graphql-request")
export async function request<T>(
client: GraphQLClient,
query: string | DocumentNode,
@@ -41,13 +43,9 @@ export async function request<T>(
/**
* TODO: Send to Monitoring (Logging and Metrics)
*/
console.log({
requestLogger.debug("complexity", {
complexityLimit: rawResponse.headers.get("x-query-complexity"),
})
console.log({
referenceDepth: rawResponse.headers.get("x-reference-depth"),
})
console.log({
resolverCost: rawResponse.headers.get("x-resolver-cost"),
})
@@ -63,17 +61,17 @@ export async function request<T>(
// @ts-expect-error: name does not exist (?)
).name.value
console.log(`[gql] Sending graphql request to ${env.CMS_URL}`, {
requestLogger.debug(`[gql] Sending graphql request to ${env.CMS_URL}`, {
operationName,
variables,
})
} catch (e) {
console.error(`[gql] Unable to extract operation name from query`, {
requestLogger.error(`[gql] Unable to extract operation name from query`, {
query,
error: e,
})
console.log(`[gql] Sending graphql request to ${env.CMS_URL}`, {
requestLogger.debug(`[gql] Sending graphql request to ${env.CMS_URL}`, {
operationName: "<Unable to extract>",
variables,
})
@@ -94,18 +92,18 @@ export async function request<T>(
// @ts-expect-error: name does not exist (?)
).name.value
console.log(`[gql] Response for ${env.CMS_URL}`, {
requestLogger.debug(`[gql] Response for ${env.CMS_URL}`, {
response,
operationName,
variables,
})
} catch (e) {
console.error(`[gql] Unable to extract operation name from query`, {
requestLogger.error(`[gql] Unable to extract operation name from query`, {
query,
error: e,
})
console.log(`[gql] Response for ${env.CMS_URL}`, {
requestLogger.debug(`[gql] Response for ${env.CMS_URL}`, {
response,
operationName: "<Unable to extract>",
variables,
@@ -138,7 +136,7 @@ export async function request<T>(
}
}
console.error(
requestLogger.error(
`[gql] Error sending graphql request to ${env.CMS_URL}`,
error
)

View File

@@ -3,6 +3,8 @@ import "server-only"
import deepmerge from "deepmerge"
import merge from "deepmerge"
import { createLogger } from "@scandic-hotels/common/logger/createLogger"
import { request } from "./request"
import type { CacheTime } from "@scandic-hotels/common/dataCache"
@@ -18,6 +20,7 @@ export async function batchRequest<T>(
}
})[]
): Promise<Data<T>> {
const batchLogger = createLogger("graphql-batch-request")
try {
const response = await Promise.allSettled(
queries.map((query) =>
@@ -37,15 +40,14 @@ export async function batchRequest<T>(
if (reasons.length) {
reasons.forEach((reason) => {
console.error(`Batch request failed`, reason)
batchLogger.error(`Batch request failed`, reason)
})
}
return { data }
} catch (error) {
console.error("Error in batched graphql request")
console.error(error)
throw new Error("Something went wrong")
batchLogger.error("Error in batched graphql request", error)
throw error
}
}

View File

@@ -7,6 +7,7 @@ import {
type CacheTime,
getCacheClient,
} from "@scandic-hotels/common/dataCache"
import { createLogger } from "@scandic-hotels/common/logger/createLogger"
import { env } from "../../env/server"
import { getPreviewHash, isPreviewByUid } from "../previewContext"
@@ -25,6 +26,8 @@ export async function request<T>(
ttl: CacheTime
}
): Promise<Data<T>> {
const requestLogger = createLogger("graphql-request")
const shouldUsePreview = variables?.uid
? isPreviewByUid(variables.uid)
: false
@@ -33,12 +36,12 @@ export async function request<T>(
internalRequest<T>(query, shouldUsePreview, variables, getPreviewHash())
if (!cacheOptions) {
console.warn("[NO CACHE] for query", query)
requestLogger.warn("[NO CACHE] for query", query)
return doCall()
}
if (shouldUsePreview) {
console.log("[NO CACHE] [PREVIEW] for query", query)
requestLogger.debug("[NO CACHE] [PREVIEW] for query", query)
return doCall()
}