feat: add logger package to improve observability
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
"typecheck": "tsc --noEmit --emitDeclarationOnly false"
|
||||
},
|
||||
"dependencies": {
|
||||
"@kan/logger": "workspace:^",
|
||||
"@novu/api": "^3.11.0",
|
||||
"@react-email/components": "^1.0.1",
|
||||
"nodemailer": "^7.0.3",
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import { render } from "@react-email/render";
|
||||
import nodemailer from "nodemailer";
|
||||
import { createLogger } from "@kan/logger";
|
||||
|
||||
const log = createLogger("email");
|
||||
|
||||
import JoinWorkspaceTemplate from "./templates/join-workspace";
|
||||
import MagicLinkTemplate from "./templates/magic-link";
|
||||
@@ -44,6 +47,7 @@ export const sendEmail = async (
|
||||
template: Templates,
|
||||
data: Record<string, string>,
|
||||
) => {
|
||||
log.info({ to, subject, template }, "Sending email");
|
||||
try {
|
||||
const EmailTemplate = emailTemplates[template];
|
||||
|
||||
@@ -62,16 +66,10 @@ export const sendEmail = async (
|
||||
throw new Error(`Failed to send email: ${response.response}`);
|
||||
}
|
||||
|
||||
log.info({ to, subject, template, messageId: response.messageId }, "Email sent");
|
||||
return response;
|
||||
} catch (error) {
|
||||
console.error("Email sending failed:", {
|
||||
to,
|
||||
from: process.env.EMAIL_FROM,
|
||||
subject,
|
||||
template,
|
||||
error: error instanceof Error ? error.message : String(error),
|
||||
stack: error instanceof Error ? error.stack : undefined,
|
||||
});
|
||||
log.error({ err: error, to, from: process.env.EMAIL_FROM, subject, template }, "Email sending failed");
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user