chore: improve logs (#12467)
* chore: improve logs * fix: import * chore: use safe stringify * chore: add more logs to google calendar * chore: use this.log --------- Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
This commit is contained in:
parent
6c4b1154b8
commit
7dc6df2ad6
|
@ -5,6 +5,7 @@ import type z from "zod";
|
|||
|
||||
import { ErrorCode } from "@calcom/lib/errorCodes";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import prisma from "@calcom/prisma";
|
||||
import type { CalendarEvent } from "@calcom/types/Calendar";
|
||||
import type { IAbstractPaymentService } from "@calcom/types/PaymentService";
|
||||
|
@ -87,7 +88,7 @@ export class PaymentService implements IAbstractPaymentService {
|
|||
}
|
||||
return paymentData;
|
||||
} catch (error) {
|
||||
log.error("Alby: Payment could not be created", bookingId, JSON.stringify(error));
|
||||
log.error("Alby: Payment could not be created", bookingId, safeStringify(error));
|
||||
throw new Error(ErrorCode.PaymentCreationFailure);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import { getFeatureFlagMap } from "@calcom/features/flags/server/utils";
|
|||
import { getLocation, getRichDescription } from "@calcom/lib/CalEventParser";
|
||||
import type CalendarService from "@calcom/lib/CalendarService";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import prisma from "@calcom/prisma";
|
||||
import type {
|
||||
Calendar,
|
||||
|
@ -106,6 +107,7 @@ export default class GoogleCalendarService implements Calendar {
|
|||
});
|
||||
myGoogleAuth.setCredentials(googleCredentials);
|
||||
} catch (err) {
|
||||
this.log.error("Error Refreshing Google Token", safeStringify(err));
|
||||
let message;
|
||||
if (err instanceof Error) message = err.message;
|
||||
else message = String(err);
|
||||
|
@ -251,7 +253,10 @@ export default class GoogleCalendarService implements Calendar {
|
|||
iCalUID: event.data.iCalUID,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("There was an error contacting google calendar service: ", error);
|
||||
this.log.error(
|
||||
"There was an error creating event in google calendar: ",
|
||||
safeStringify({ error, selectedCalendar, credentialId })
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
@ -332,7 +337,10 @@ export default class GoogleCalendarService implements Calendar {
|
|||
}
|
||||
return evt?.data;
|
||||
} catch (error) {
|
||||
console.error("There was an error contacting google calendar service: ", error);
|
||||
this.log.error(
|
||||
"There was an error updating event in google calendar: ",
|
||||
safeStringify({ error, event, uid })
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
@ -354,6 +362,10 @@ export default class GoogleCalendarService implements Calendar {
|
|||
});
|
||||
return event?.data;
|
||||
} catch (error) {
|
||||
this.log.error(
|
||||
"There was an error deleting event from google calendar: ",
|
||||
safeStringify({ error, event, externalCalendarId })
|
||||
);
|
||||
const err = error as GoogleCalError;
|
||||
/**
|
||||
* 410 is when an event is already deleted on the Google cal before on cal.com
|
||||
|
@ -502,7 +514,10 @@ export default class GoogleCalendarService implements Calendar {
|
|||
return busyData;
|
||||
}
|
||||
} catch (error) {
|
||||
this.log.error("There was an error contacting google calendar service: ", error);
|
||||
this.log.error(
|
||||
"There was an error getting availability from google calendar: ",
|
||||
safeStringify({ error, selectedCalendars })
|
||||
);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
@ -524,7 +539,7 @@ export default class GoogleCalendarService implements Calendar {
|
|||
} satisfies IntegrationCalendar)
|
||||
);
|
||||
} catch (error) {
|
||||
this.log.error("There was an error contacting google calendar service: ", error);
|
||||
this.log.error("There was an error getting calendars: ", safeStringify(error));
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import Paypal from "@calcom/app-store/paypal/lib/Paypal";
|
|||
import { WEBAPP_URL } from "@calcom/lib/constants";
|
||||
import { ErrorCode } from "@calcom/lib/errorCodes";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import prisma from "@calcom/prisma";
|
||||
import type { CalendarEvent } from "@calcom/types/Calendar";
|
||||
import type { IAbstractPaymentService } from "@calcom/types/PaymentService";
|
||||
|
@ -91,7 +92,7 @@ export class PaymentService implements IAbstractPaymentService {
|
|||
}
|
||||
return paymentData;
|
||||
} catch (error) {
|
||||
log.error("Paypal: Payment could not be created for bookingId", bookingId);
|
||||
log.error("Paypal: Payment could not be created for bookingId", bookingId, safeStringify(error));
|
||||
throw new Error(ErrorCode.PaymentCreationFailure);
|
||||
}
|
||||
}
|
||||
|
@ -170,7 +171,11 @@ export class PaymentService implements IAbstractPaymentService {
|
|||
}
|
||||
return paymentData;
|
||||
} catch (error) {
|
||||
log.error("Paypal: Payment method could not be collected for bookingId", bookingId);
|
||||
log.error(
|
||||
"Paypal: Payment method could not be collected for bookingId",
|
||||
bookingId,
|
||||
safeStringify(error)
|
||||
);
|
||||
throw new Error("Paypal: Payment method could not be collected");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import { sendAwaitingPaymentEmail } from "@calcom/emails";
|
|||
import { ErrorCode } from "@calcom/lib/errorCodes";
|
||||
import { getErrorFromUnknown } from "@calcom/lib/errors";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import prisma from "@calcom/prisma";
|
||||
import type { CalendarEvent } from "@calcom/types/Calendar";
|
||||
import type { IAbstractPaymentService } from "@calcom/types/PaymentService";
|
||||
|
@ -132,8 +133,7 @@ export class PaymentService implements IAbstractPaymentService {
|
|||
}
|
||||
return paymentData;
|
||||
} catch (error) {
|
||||
console.error(`Payment could not be created for bookingId ${bookingId}`, error);
|
||||
log.error("Stripe: Payment could not be created", bookingId, JSON.stringify(error));
|
||||
log.error("Stripe: Payment could not be created", bookingId, safeStringify(error));
|
||||
throw new Error("payment_not_created_error");
|
||||
}
|
||||
}
|
||||
|
@ -207,7 +207,7 @@ export class PaymentService implements IAbstractPaymentService {
|
|||
log.error(
|
||||
"Stripe: Payment method could not be collected for bookingId",
|
||||
bookingId,
|
||||
JSON.stringify(error)
|
||||
safeStringify(error)
|
||||
);
|
||||
throw new Error("Stripe: Payment method could not be collected");
|
||||
}
|
||||
|
@ -286,7 +286,7 @@ export class PaymentService implements IAbstractPaymentService {
|
|||
|
||||
return paymentData;
|
||||
} catch (error) {
|
||||
log.error("Stripe: Could not charge card for payment", _bookingId, JSON.stringify(error));
|
||||
log.error("Stripe: Could not charge card for payment", _bookingId, safeStringify(error));
|
||||
throw new Error(ErrorCode.ChargeCardFailure);
|
||||
}
|
||||
}
|
||||
|
@ -378,7 +378,7 @@ export class PaymentService implements IAbstractPaymentService {
|
|||
await this.stripe.paymentIntents.cancel(payment.externalId, { stripeAccount });
|
||||
return true;
|
||||
} catch (e) {
|
||||
log.error("Stripe: Unable to delete Payment in stripe of paymentId", paymentId, JSON.stringify(e));
|
||||
log.error("Stripe: Unable to delete Payment in stripe of paymentId", paymentId, safeStringify(e));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -144,7 +144,7 @@ const updateMeeting = async (
|
|||
if (!updatedMeeting) {
|
||||
log.error(
|
||||
"updateMeeting failed",
|
||||
JSON.stringify({ bookingRef, canCallUpdateMeeting, calEvent, credential })
|
||||
safeStringify({ bookingRef, canCallUpdateMeeting, calEvent, credential })
|
||||
);
|
||||
return {
|
||||
appName: credential.appId || "",
|
||||
|
|
|
@ -3,6 +3,7 @@ import { getWebhookPayloadForBooking } from "@calcom/features/bookings/lib/getWe
|
|||
import getWebhooks from "@calcom/features/webhooks/lib/getWebhooks";
|
||||
import sendPayload from "@calcom/features/webhooks/lib/sendPayload";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import { WebhookTriggerEvents } from "@calcom/prisma/enums";
|
||||
import type { CalendarEvent } from "@calcom/types/Calendar";
|
||||
|
||||
|
@ -65,6 +66,6 @@ export async function handleBookingRequested(args: {
|
|||
await Promise.all(promises);
|
||||
} catch (error) {
|
||||
// Silently fail
|
||||
log.error(error);
|
||||
log.error("Error in handleBookingRequested", safeStringify(error));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import type { EventTypeInfo } from "@calcom/features/webhooks/lib/sendPayload";
|
|||
import sendPayload from "@calcom/features/webhooks/lib/sendPayload";
|
||||
import { getTeamIdFromEventType } from "@calcom/lib/getTeamIdFromEventType";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import type { PrismaClient } from "@calcom/prisma";
|
||||
import { BookingStatus, WebhookTriggerEvents } from "@calcom/prisma/enums";
|
||||
import { EventTypeMetaDataSchema } from "@calcom/prisma/zod-utils";
|
||||
|
@ -65,7 +66,7 @@ export async function handleConfirmation(args: {
|
|||
message: "Booking failed",
|
||||
};
|
||||
|
||||
log.error(`Booking ${user.username} failed`, JSON.stringify({ error, results }));
|
||||
log.error(`Booking ${user.username} failed`, safeStringify({ error, results }));
|
||||
} else {
|
||||
if (results.length) {
|
||||
// TODO: Handle created event metadata more elegantly
|
||||
|
|
|
@ -14,6 +14,7 @@ import { HttpError as HttpCode } from "@calcom/lib/http-error";
|
|||
import logger from "@calcom/lib/logger";
|
||||
import { getBooking } from "@calcom/lib/payment/getBooking";
|
||||
import { handlePaymentSuccess } from "@calcom/lib/payment/handlePaymentSuccess";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import { prisma } from "@calcom/prisma";
|
||||
import { BookingStatus } from "@calcom/prisma/enums";
|
||||
|
||||
|
@ -38,7 +39,7 @@ export async function handleStripePaymentSuccess(event: Stripe.Event) {
|
|||
});
|
||||
|
||||
if (!payment?.bookingId) {
|
||||
log.error(JSON.stringify(paymentIntent), JSON.stringify(payment));
|
||||
log.error("Stripe: Payment Not Found", safeStringify(paymentIntent), safeStringify(payment));
|
||||
throw new HttpCode({ statusCode: 204, message: "Payment not found" });
|
||||
}
|
||||
if (!payment?.bookingId) throw new HttpCode({ statusCode: 204, message: "Payment not found" });
|
||||
|
|
|
@ -4,6 +4,7 @@ import { v4 } from "uuid";
|
|||
import { getHumanReadableLocationValue } from "@calcom/core/location";
|
||||
import { getCalEventResponses } from "@calcom/features/bookings/lib/getCalEventResponses";
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
import { getTranslation } from "@calcom/lib/server";
|
||||
import prisma from "@calcom/prisma";
|
||||
import type { ApiKey } from "@calcom/prisma/client";
|
||||
|
@ -75,7 +76,10 @@ export async function addSubscription({
|
|||
const userId = appApiKey ? appApiKey.userId : account && !account.isTeam ? account.id : null;
|
||||
const teamId = appApiKey ? appApiKey.teamId : account && account.isTeam ? account.id : null;
|
||||
|
||||
log.error(`Error creating subscription for ${teamId ? `team ${teamId}` : `user ${userId}`}.`);
|
||||
log.error(
|
||||
`Error creating subscription for ${teamId ? `team ${teamId}` : `user ${userId}`}.`,
|
||||
safeStringify(error)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,7 +161,8 @@ export async function deleteSubscription({
|
|||
log.error(
|
||||
`Error deleting subscription for user ${
|
||||
teamId ? `team ${teamId}` : `userId ${userId}`
|
||||
}, webhookId ${webhookId}`
|
||||
}, webhookId ${webhookId}`,
|
||||
safeStringify(err)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -260,7 +265,10 @@ export async function listBookings(
|
|||
const userId = appApiKey ? appApiKey.userId : account && !account.isTeam ? account.id : null;
|
||||
const teamId = appApiKey ? appApiKey.teamId : account && account.isTeam ? account.id : null;
|
||||
|
||||
log.error(`Error retrieving list of bookings for ${teamId ? `team ${teamId}` : `user ${userId}`}.`);
|
||||
log.error(
|
||||
`Error retrieving list of bookings for ${teamId ? `team ${teamId}` : `user ${userId}`}.`,
|
||||
safeStringify(err)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import { Prisma } from "@prisma/client";
|
||||
|
||||
import logger from "@calcom/lib/logger";
|
||||
import { safeStringify } from "@calcom/lib/safeStringify";
|
||||
|
||||
const log = logger.getSubLogger({ prefix: [`[[redactError]`] });
|
||||
|
||||
|
@ -19,7 +20,7 @@ export const redactError = <T extends Error | unknown>(error: T) => {
|
|||
}
|
||||
log.debug("Type of Error: ", error.constructor);
|
||||
if (shouldRedact(error)) {
|
||||
log.error("Error: ", JSON.stringify(error));
|
||||
log.error("Error: ", safeStringify(error));
|
||||
return new Error("An error occured while querying the database.");
|
||||
}
|
||||
return error;
|
||||
|
|
Loading…
Reference in New Issue
Block a user