fix: make sure all logged errors are preceeded with a message

Just logging an error makes it difficult to relate the error log to code in the
codebase. Error logging a message right before the error itself makes it easier
to search the codebase for that error log.
This commit is contained in:
Michael Zetterberg
2024-07-24 11:32:15 +02:00
parent 80c80fe1bd
commit 71dcf30719
18 changed files with 56 additions and 46 deletions

View File

@@ -31,6 +31,7 @@ export async function editProfile(_prevState: State, values: FormData) {
status: Status.success, status: Status.success,
} }
} else { } else {
console.error("Error parsing edit profile")
console.error(parsedData.error) console.error(parsedData.error)
return { return {
message: "Invalid data, parse failed!", message: "Invalid data, parse failed!",
@@ -39,6 +40,9 @@ export async function editProfile(_prevState: State, values: FormData) {
} }
} catch (error) { } catch (error) {
if (error instanceof ZodError) { if (error instanceof ZodError) {
console.error(`ZodError handling profile edit`)
console.error(error)
return { return {
errors: error.issues.map((issue) => ({ errors: error.issues.map((issue) => ({
message: `Server validation: ${issue.message}`, message: `Server validation: ${issue.message}`,
@@ -49,7 +53,7 @@ export async function editProfile(_prevState: State, values: FormData) {
} }
} }
console.info(`EditProfile Server Action Error`) console.error(`EditProfile Server Action Error`)
console.error(error) console.error(error)
return { return {

View File

@@ -35,6 +35,7 @@ export default async function CurrentPreviewPage({
return <ContentPage data={response.data} /> return <ContentPage data={response.data} />
} catch (error) { } catch (error) {
// TODO: throw 500 // TODO: throw 500
console.error("Error in current preview page")
console.error(error) console.error(error)
throw new Error("Something went wrong") throw new Error("Something went wrong")
} }

View File

@@ -107,7 +107,7 @@ export async function POST(request: NextRequest) {
return Response.json({ revalidated: true, now: Date.now() }) return Response.json({ revalidated: true, now: Date.now() })
} catch (error) { } catch (error) {
console.info("Failed to revalidate tag(s)") console.error("Failed to revalidate tag(s)")
console.error(error) console.error(error)
return internalServerError({ revalidated: false, now: Date.now() }) return internalServerError({ revalidated: false, now: Date.now() })
} }

View File

@@ -104,6 +104,7 @@ export const config = {
return url return url
} }
} catch (e) { } catch (e) {
console.error("Error in auth redirect callback")
console.error(e) console.error(e)
} }
} }

View File

@@ -68,6 +68,7 @@ export async function request<T>(
return { data: response } return { data: response }
} catch (error) { } catch (error) {
console.error("Error in graphql request")
console.error(error) console.error(error)
throw new Error("Something went wrong") throw new Error("Something went wrong")
} }

View File

@@ -28,6 +28,7 @@ export async function batchRequest<T>(
return { data } return { data }
} catch (error) { } catch (error) {
console.error("Error in batched graphql request")
console.error(error) console.error(error)
throw new Error("Something went wrong") throw new Error("Something went wrong")
} }

View File

@@ -35,6 +35,7 @@ export async function previewRequest<T>(
return { data: response } return { data: response }
} catch (error) { } catch (error) {
console.error("Error in preview graphql request")
console.error(error) console.error(error)
throw new Error("Something went wrong") throw new Error("Something went wrong")
} }

View File

@@ -56,7 +56,7 @@ export const middleware: NextMiddleware = async (request, event) => {
} catch (e) { } catch (e) {
if (e instanceof NextResponse && e.status) { if (e instanceof NextResponse && e.status) {
const cause = await e.json() const cause = await e.json()
console.error(`Error in middleware`) console.error(`NextResponse Error in middleware`)
console.error(cause) console.error(cause)
return NextResponse.rewrite( return NextResponse.rewrite(

View File

@@ -126,6 +126,7 @@ export const middleware: NextMiddleware = async (request) => {
} }
} catch (e) { } catch (e) {
if (e instanceof Error) { if (e instanceof Error) {
console.error("Error in webView middleware")
console.error(`${e.name}: ${e.message}`) console.error(`${e.name}: ${e.message}`)
} }

View File

@@ -56,7 +56,7 @@ export const accountPageQueryRouter = router({
const validatedAccountPageRefs = const validatedAccountPageRefs =
validateAccountPageRefsSchema.safeParse(cleanedData) validateAccountPageRefsSchema.safeParse(cleanedData)
if (!validatedAccountPageRefs.success) { if (!validatedAccountPageRefs.success) {
console.info(`Failed to validate My Page Refs - (uid: ${uid})`) console.error(`Failed to validate My Page Refs - (uid: ${uid})`)
console.error(validatedAccountPageRefs.error) console.error(validatedAccountPageRefs.error)
return null return null
} }
@@ -86,7 +86,7 @@ export const accountPageQueryRouter = router({
) )
if (!validatedAccountPage.success) { if (!validatedAccountPage.success) {
console.info(`Failed to validate Account Page - (uid: ${uid})`) console.error(`Failed to validate Account Page - (uid: ${uid})`)
console.error(validatedAccountPage.error) console.error(validatedAccountPage.error)
return null return null
} }

View File

@@ -47,7 +47,7 @@ export const baseQueryRouter = router({
) )
if (!validatedContactConfigConfig.success) { if (!validatedContactConfigConfig.success) {
console.info( console.error(
`Failed to validate Contact Config Data - (lang: ${ctx.lang})` `Failed to validate Contact Config Data - (lang: ${ctx.lang})`
) )
console.error(validatedContactConfigConfig.error) console.error(validatedContactConfigConfig.error)
@@ -85,7 +85,7 @@ export const baseQueryRouter = router({
) )
if (!validatedHeaderConfig.success) { if (!validatedHeaderConfig.success) {
console.info(`Failed to validate Header - (lang: ${input.lang})`) console.error(`Failed to validate Header - (lang: ${input.lang})`)
console.error(validatedHeaderConfig.error) console.error(validatedHeaderConfig.error)
return null return null
} }
@@ -126,7 +126,7 @@ export const baseQueryRouter = router({
) )
if (!validatedFooterConfig.success) { if (!validatedFooterConfig.success) {
console.info(`Failed to validate Footer - (lang: ${input.lang})`) console.error(`Failed to validate Footer - (lang: ${input.lang})`)
console.error(validatedFooterConfig.error) console.error(validatedFooterConfig.error)
return null return null
} }

View File

@@ -40,7 +40,7 @@ async function getLoyaltyPageBreadcrumbs(variables: Variables) {
) )
if (!validatedRefsData.success) { if (!validatedRefsData.success) {
console.info( console.error(
`Failed to validate Loyaltypage Breadcrumbs Refs - (url: ${variables.url})` `Failed to validate Loyaltypage Breadcrumbs Refs - (url: ${variables.url})`
) )
console.error(validatedRefsData.error) console.error(validatedRefsData.error)
@@ -63,7 +63,7 @@ async function getLoyaltyPageBreadcrumbs(variables: Variables) {
validateLoyaltyPageBreadcrumbsContentstackSchema.safeParse(response.data) validateLoyaltyPageBreadcrumbsContentstackSchema.safeParse(response.data)
if (!validatedBreadcrumbsData.success) { if (!validatedBreadcrumbsData.success) {
console.info( console.error(
`Failed to validate Loyaltypage Breadcrumbs Data - (url: ${variables.url})` `Failed to validate Loyaltypage Breadcrumbs Data - (url: ${variables.url})`
) )
console.error(validatedBreadcrumbsData.error) console.error(validatedBreadcrumbsData.error)
@@ -87,7 +87,7 @@ async function getMyPagesBreadcrumbs(variables: Variables) {
refsResponse.data refsResponse.data
) )
if (!validatedRefsData.success) { if (!validatedRefsData.success) {
console.info( console.error(
`Failed to validate My Page Breadcrumbs Refs - (url: ${variables.url})` `Failed to validate My Page Breadcrumbs Refs - (url: ${variables.url})`
) )
console.error(validatedRefsData.error) console.error(validatedRefsData.error)
@@ -110,7 +110,7 @@ async function getMyPagesBreadcrumbs(variables: Variables) {
validateMyPagesBreadcrumbsContentstackSchema.safeParse(response.data) validateMyPagesBreadcrumbsContentstackSchema.safeParse(response.data)
if (!validatedBreadcrumbsData.success) { if (!validatedBreadcrumbsData.success) {
console.info( console.error(
`Failed to validate My Page Breadcrumbs Data - (url: ${variables.url})` `Failed to validate My Page Breadcrumbs Data - (url: ${variables.url})`
) )
console.error(validatedBreadcrumbsData.error) console.error(validatedBreadcrumbsData.error)

View File

@@ -19,7 +19,7 @@ export const hotelPageQueryRouter = router({
const validatedHotelPage = validateHotelPageSchema.safeParse(response.data) const validatedHotelPage = validateHotelPageSchema.safeParse(response.data)
if (!validatedHotelPage.success) { if (!validatedHotelPage.success) {
console.info( console.error(
`Failed to validate Hotel Page - (uid: ${uid}, lang: ${lang})` `Failed to validate Hotel Page - (uid: ${uid}, lang: ${lang})`
) )
console.error(validatedHotelPage.error) console.error(validatedHotelPage.error)

View File

@@ -102,7 +102,7 @@ async function getLanguageSwitcher(options: LanguageSwitcherVariables) {
}, },
]) ])
default: default:
console.info(`type: [${options.contentType}]`) console.error(`type: [${options.contentType}]`)
console.error(`Trying to get a content type that is not supported`) console.error(`Trying to get a content type that is not supported`)
throw internalServerError() throw internalServerError()
} }
@@ -136,7 +136,7 @@ export const languageSwitcherQueryRouter = router({
validateLanguageSwitcherData.safeParse(urls) validateLanguageSwitcherData.safeParse(urls)
if (!validatedLanguageSwitcherData.success) { if (!validatedLanguageSwitcherData.success) {
console.info( console.error(
`Failed to validate Language Switcher Data - (contentType: ${ctx.contentType}, lang: ${ctx.lang}, uid: ${ctx.uid})` `Failed to validate Language Switcher Data - (contentType: ${ctx.contentType}, lang: ${ctx.lang}, uid: ${ctx.uid})`
) )
console.error(validatedLanguageSwitcherData.error) console.error(validatedLanguageSwitcherData.error)

View File

@@ -88,7 +88,7 @@ export const loyaltyPageQueryRouter = router({
const validatedLoyaltyPageRefs = const validatedLoyaltyPageRefs =
validateLoyaltyPageRefsSchema.safeParse(cleanedData) validateLoyaltyPageRefsSchema.safeParse(cleanedData)
if (!validatedLoyaltyPageRefs.success) { if (!validatedLoyaltyPageRefs.success) {
console.info( console.error(
`Failed to validate Loyaltypage Refs - (lang: ${lang}, uid: ${uid})` `Failed to validate Loyaltypage Refs - (lang: ${lang}, uid: ${uid})`
) )
console.error(validatedLoyaltyPageRefs.error) console.error(validatedLoyaltyPageRefs.error)
@@ -219,7 +219,7 @@ export const loyaltyPageQueryRouter = router({
validateLoyaltyPageSchema.safeParse(loyaltyPage) validateLoyaltyPageSchema.safeParse(loyaltyPage)
if (!validatedLoyaltyPage.success) { if (!validatedLoyaltyPage.success) {
console.info( console.error(
`Failed to validate Loyaltypage Data - (lang: ${lang}, uid: ${uid})` `Failed to validate Loyaltypage Data - (lang: ${lang}, uid: ${uid})`
) )
console.error(validatedLoyaltyPage.error) console.error(validatedLoyaltyPage.error)

View File

@@ -77,7 +77,7 @@ export const navigationQueryRouter = router({
const validatedMyPagesNavigationRefs = const validatedMyPagesNavigationRefs =
navigationRefsPayloadSchema.safeParse(refsResponse.data) navigationRefsPayloadSchema.safeParse(refsResponse.data)
if (!validatedMyPagesNavigationRefs.success) { if (!validatedMyPagesNavigationRefs.success) {
console.info( console.error(
`Failed to validate My Pages Navigation Refs - (lang: ${lang}` `Failed to validate My Pages Navigation Refs - (lang: ${lang}`
) )
console.error(validatedMyPagesNavigationRefs.error) console.error(validatedMyPagesNavigationRefs.error)
@@ -109,7 +109,7 @@ export const navigationQueryRouter = router({
response.data response.data
) )
if (!validatedMyPagesNavigation.success) { if (!validatedMyPagesNavigation.success) {
console.info( console.error(
`Failed to validate My Pages Navigation Data - (lang: ${lang}` `Failed to validate My Pages Navigation Data - (lang: ${lang}`
) )
console.error(validatedMyPagesNavigation.error) console.error(validatedMyPagesNavigation.error)
@@ -126,7 +126,7 @@ export const navigationQueryRouter = router({
const validatedNav = getNavigationSchema.safeParse(nav) const validatedNav = getNavigationSchema.safeParse(nav)
if (!validatedNav.success) { if (!validatedNav.success) {
console.info( console.error(
`Failed to validate My Pages Navigation Return Data - (lang: ${lang}` `Failed to validate My Pages Navigation Return Data - (lang: ${lang}`
) )
console.error(validatedNav.error) console.error(validatedNav.error)

View File

@@ -45,7 +45,7 @@ export const hotelQueryRouter = router({
) )
if (!validatedHotelData.success) { if (!validatedHotelData.success) {
console.info(`Get Individual Hotel Data - Verified Data Error`) console.error(`Get Individual Hotel Data - Verified Data Error`)
console.error(validatedHotelData.error) console.error(validatedHotelData.error)
throw badRequestError() throw badRequestError()
} }
@@ -56,7 +56,7 @@ export const hotelQueryRouter = router({
.map((roomCategory) => { .map((roomCategory) => {
const validatedRoom = RoomSchema.safeParse(roomCategory) const validatedRoom = RoomSchema.safeParse(roomCategory)
if (!validatedRoom.success) { if (!validatedRoom.success) {
console.info(`Get Room Category Data - Verified Data Error`) console.error(`Get Room Category Data - Verified Data Error`)
console.error(validatedRoom.error) console.error(validatedRoom.error)
throw badRequestError() throw badRequestError()
} }
@@ -83,7 +83,7 @@ export const hotelQueryRouter = router({
const validatedHotelData = getRatesSchema.safeParse(tempRatesData) const validatedHotelData = getRatesSchema.safeParse(tempRatesData)
if (!validatedHotelData.success) { if (!validatedHotelData.success) {
console.info(`Get Individual Rates Data - Verified Data Error`) console.error(`Get Individual Rates Data - Verified Data Error`)
console.error(validatedHotelData.error) console.error(validatedHotelData.error)
throw badRequestError() throw badRequestError()
} }

View File

@@ -50,7 +50,7 @@ async function getVerifiedUser({ session }: { session: Session }) {
const verifiedData = getUserSchema.safeParse(apiJson.data.attributes) const verifiedData = getUserSchema.safeParse(apiJson.data.attributes)
if (!verifiedData.success) { if (!verifiedData.success) {
console.info( console.error(
`Failed to validate User - (User: ${JSON.stringify(session.user)})` `Failed to validate User - (User: ${JSON.stringify(session.user)})`
) )
console.error(verifiedData.error) console.error(verifiedData.error)
@@ -248,7 +248,7 @@ export const userQueryRouter = router({
) )
if (!previousStaysResponse.ok) { if (!previousStaysResponse.ok) {
console.info( console.error(
`API Response Failed - Getting Previous Stays for tracking user` `API Response Failed - Getting Previous Stays for tracking user`
) )
console.error(previousStaysResponse) console.error(previousStaysResponse)
@@ -259,7 +259,7 @@ export const userQueryRouter = router({
const verifiedPreviousStaysData = const verifiedPreviousStaysData =
getStaysSchema.safeParse(previousStaysApiJson) getStaysSchema.safeParse(previousStaysApiJson)
if (!verifiedPreviousStaysData.success) { if (!verifiedPreviousStaysData.success) {
console.info(`Failed to validate Previous Stays Data for tracking user`) console.error(`Failed to validate Previous Stays Data for tracking user`)
console.error(verifiedPreviousStaysData.error) console.error(verifiedPreviousStaysData.error)
return notLoggedInUserTrackingData return notLoggedInUserTrackingData
} }
@@ -323,8 +323,8 @@ export const userQueryRouter = router({
// default: // default:
// throw internalServerError(apiResponse) // throw internalServerError(apiResponse)
// } // }
console.info(`API Response Failed - Getting Previous Stays`) console.error(`API Response Failed - Getting Previous Stays`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`) console.error(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(apiResponse) console.error(apiResponse)
return null return null
} }
@@ -333,8 +333,8 @@ export const userQueryRouter = router({
const verifiedData = getStaysSchema.safeParse(apiJson) const verifiedData = getStaysSchema.safeParse(apiJson)
if (!verifiedData.success) { if (!verifiedData.success) {
console.info(`Failed to validate Previous Stays Data`) console.error(`Failed to validate Previous Stays Data`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`) console.error(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(verifiedData.error) console.error(verifiedData.error)
return null return null
} }
@@ -390,8 +390,8 @@ export const userQueryRouter = router({
// default: // default:
// throw internalServerError(apiResponse) // throw internalServerError(apiResponse)
// } // }
console.info(`API Response Failed - Getting Upcoming Stays`) console.error(`API Response Failed - Getting Upcoming Stays`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`) console.error(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(apiResponse) console.error(apiResponse)
return null return null
} }
@@ -399,8 +399,8 @@ export const userQueryRouter = router({
const apiJson = await apiResponse.json() const apiJson = await apiResponse.json()
const verifiedData = getStaysSchema.safeParse(apiJson) const verifiedData = getStaysSchema.safeParse(apiJson)
if (!verifiedData.success) { if (!verifiedData.success) {
console.info(`Failed to validate Upcoming Stays Data`) console.error(`Failed to validate Upcoming Stays Data`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`) console.error(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(verifiedData.error) console.error(verifiedData.error)
return null return null
} }
@@ -442,8 +442,8 @@ export const userQueryRouter = router({
// default: // default:
// throw internalServerError() // throw internalServerError()
// } // }
console.info(`API Response Failed - Getting Friend Transactions`) console.error(`API Response Failed - Getting Friend Transactions`)
console.info(`User: (${JSON.stringify(opts.ctx.session.user)})`) console.error(`User: (${JSON.stringify(opts.ctx.session.user)})`)
console.error(apiResponse) console.error(apiResponse)
return null return null
} }
@@ -451,8 +451,8 @@ export const userQueryRouter = router({
const apiJson = await apiResponse.json() const apiJson = await apiResponse.json()
const verifiedData = getFriendTransactionsSchema.safeParse(apiJson) const verifiedData = getFriendTransactionsSchema.safeParse(apiJson)
if (!verifiedData.success) { if (!verifiedData.success) {
console.info(`Failed to validate Friend Transactions Data`) console.error(`Failed to validate Friend Transactions Data`)
console.info(`User: (${JSON.stringify(opts.ctx.session.user)})`) console.error(`User: (${JSON.stringify(opts.ctx.session.user)})`)
console.error(verifiedData.error) console.error(verifiedData.error)
return null return null
} }
@@ -482,8 +482,8 @@ export const userQueryRouter = router({
}) })
if (!apiResponse.ok) { if (!apiResponse.ok) {
console.info(`API Response Failed - Getting Creadit Cards`) console.error(`API Response Failed - Getting Creadit Cards`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`) console.error(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(apiResponse) console.error(apiResponse)
return null return null
} }
@@ -491,8 +491,8 @@ export const userQueryRouter = router({
const apiJson = await apiResponse.json() const apiJson = await apiResponse.json()
const verifiedData = getCreditCardsSchema.safeParse(apiJson) const verifiedData = getCreditCardsSchema.safeParse(apiJson)
if (!verifiedData.success) { if (!verifiedData.success) {
console.info(`Failed to validate Credit Cards Data`) console.error(`Failed to validate Credit Cards Data`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`) console.error(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(verifiedData.error) console.error(verifiedData.error)
return null return null
} }
@@ -519,8 +519,8 @@ export const userQueryRouter = router({
// default: // default:
// throw internalServerError() // throw internalServerError()
// } // }
console.info(`API Response Failed - Getting Membership Cards`) console.error(`API Response Failed - Getting Membership Cards`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`) console.error(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(apiResponse) console.error(apiResponse)
} }
@@ -531,8 +531,8 @@ export const userQueryRouter = router({
) )
if (!verifiedData.success) { if (!verifiedData.success) {
console.info(`Failed to validate Memberships Cards Data`) console.error(`Failed to validate Memberships Cards Data`)
console.info(`User: (${JSON.stringify(ctx.session.user)})`) console.error(`User: (${JSON.stringify(ctx.session.user)})`)
console.error(verifiedData.error) console.error(verifiedData.error)
return null return null
} }