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:
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user