Skip to content

Commit

Permalink
Add timestamps to all logs in codebase
Browse files Browse the repository at this point in the history
  • Loading branch information
Archit404Error committed Mar 22, 2024
1 parent c20920f commit 97b32c8
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 14 deletions.
5 changes: 3 additions & 2 deletions src/database.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import mongoose, { ConnectOptions } from "mongoose";
import { logWithTime } from "./utils";

export const dbConnect = async () => {
const uri =
Expand All @@ -9,10 +10,10 @@ export const dbConnect = async () => {
useNewUrlParser: true,
useUnifiedTopology: true,
} as ConnectOptions);
console.log("✅ Connected to MongoDB");
logWithTime("✅ Connected to MongoDB");
};

export const dbDisconnect = async () => {
await mongoose.disconnect();
console.log("✅ Disconnected from MongoDB");
logWithTime("✅ Disconnected from MongoDB");
};
4 changes: 2 additions & 2 deletions src/forms/controllers.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import moment from "moment-timezone";
import { SEMESTER } from "../constants";
import { getStartOfToday, isToday } from "../utils";
import { getStartOfToday, isToday, logWithTime } from "../utils";
import { initSheet } from "./formTracker";
import { Form, FormModel } from "./models";

Expand Down Expand Up @@ -42,7 +42,7 @@ const getPendingMembers = async () => {
"dueDate",
getStartOfToday()
);
console.log(
logWithTime(
`Upcoming Forms: ${upcomingForms.map((upcomingForm) => upcomingForm.title)}`
);
for (const form of upcomingForms) {
Expand Down
7 changes: 2 additions & 5 deletions src/forms/formTracker.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { JWT } from "google-auth-library";
import { GoogleSpreadsheet } from "google-spreadsheet";
import moment from "moment-timezone";
import serviceAccount from "../../service_account.json";
import { logWithTime } from "../utils";

const serviceAccountAuth = new JWT({
email: serviceAccount.client_email,
Expand All @@ -20,9 +20,6 @@ const formTrackerSheet = new GoogleSpreadsheet(
*/
export const initSheet = async (): Promise<GoogleSpreadsheet> => {
await formTrackerSheet.loadInfo();
const runDate = moment().tz("America/New_York").toDate();
console.log(
`${runDate.getMonth()}/${runDate.getDay()}/${runDate.getFullYear()} ${runDate.getHours()}:${runDate.getMinutes()} ✅ Loaded form tracker sheet`
);
logWithTime("✅ Loaded form tracker sheet");
return formTrackerSheet;
};
11 changes: 6 additions & 5 deletions src/server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { dbConnect } from "./database";
import * as FormController from "./forms/controllers";
import { Form } from "./forms/models";
import slackbot from "./slackbot";
import { logWithTime } from "./utils";

// server will be used for webhooks and admin dashboard
const app = express();
Expand All @@ -24,7 +25,7 @@ const sendFormDM = async (form: Form, userEmails: string[]) => {
.replaceAll(" ", "-")
.replaceAll(/[.,\/#!$%\^&\*;:{}=`~()]/g, "");
channelTitle = `${channelTitle}-reminder`;
console.log(`Attempting to create channel ${channelTitle}`);
logWithTime(`Attempting to create channel ${channelTitle}`);
const response = await slackbot.client.conversations.create({
name: channelTitle,
});
Expand All @@ -49,7 +50,7 @@ const sendFormReminders = async () => {
await FormController.ingestForms();
const pendingMembersMap = await FormController.getPendingMembers().catch(
(err) => {
console.log(`Error while getting pending members: ${err}`);
logWithTime(`Error while getting pending members: ${err}`);
return new Map<Form, string[]>();
}
);
Expand All @@ -58,18 +59,18 @@ const sendFormReminders = async () => {
if (userEmails.length == 0) continue; // Skip if no pending members for this form

await sendFormDM(formTitle, userEmails).catch((err) =>
console.log(`Error while sending DMs: ${err}`)
logWithTime(`Error while sending DMs: ${err}`)
);
}
};

export const startServer = async () => {
await dbConnect();
await slackbot.start(process.env.PORT || 3000);
console.log("✅ Slackbot up and running!");
logWithTime("✅ Slackbot up and running!");

app.listen(process.env.PORT || 8000);
console.log("✅ Express server up and running!");
logWithTime("✅ Express server up and running!");

await sendFormReminders();
setInterval(sendFormReminders, 1000 * 60 * 60 * 24); // Run every 24 hours
Expand Down
13 changes: 13 additions & 0 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,16 @@ export const isToday = (date: Date) => {
*/
export const getStartOfToday = () =>
moment().tz("America/New_York").startOf("day").toDate();

/**
* A console.log wrapper which logs the current EST time to stdout
* @param logData data to log
*/
export const logWithTime = (logData: string) => {
const runDate = moment().tz("America/New_York").toDate();
console.log(
`${
runDate.getMonth() + 1
}/${runDate.getDate()}/${runDate.getFullYear()} ${runDate.getHours()}:${runDate.getMinutes()} EST: ${logData}`
);
};

0 comments on commit 97b32c8

Please sign in to comment.