Add logging with Winston
This commit is contained in:
parent
e40ed22746
commit
9293c92e58
8 changed files with 357 additions and 25 deletions
|
|
@ -1,5 +1,7 @@
|
|||
import { RequestInit } from "next/dist/server/web/spec-extension/request";
|
||||
|
||||
import logger from "../logging/logger";
|
||||
|
||||
const FRONTEND_URL = process.env.NEXT_PUBLIC_FRONTEND_URL;
|
||||
|
||||
export async function cmFetch<T>(
|
||||
|
|
@ -25,7 +27,7 @@ export async function cmFetchRaw(
|
|||
if (!response.ok && !ignoreStatuses?.includes(response.status)) {
|
||||
throw new Error("Request failed");
|
||||
}
|
||||
console.log(response);
|
||||
logger.log("debug", response); // debug: cmFetch response logging
|
||||
|
||||
return response;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import { getSessionToken } from "@/lib/server_functions/userAuth";
|
||||
import logger from "@/lib/logging/logger";
|
||||
|
||||
import { cmFetch, cmFetchRaw } from "../cmFetch";
|
||||
import { Token, User } from "../types";
|
||||
|
|
@ -20,14 +21,11 @@ export async function getUser(id: number) {
|
|||
}
|
||||
|
||||
export async function loginUser(user: FormData) {
|
||||
console.log(`Recieved login user request for form: `);
|
||||
for (const value of user.values()) {
|
||||
console.log(value);
|
||||
}
|
||||
const body = {
|
||||
username: user.get("username"),
|
||||
password: user.get("password"),
|
||||
};
|
||||
logger.log("debug", `Recieved login user request for form: ${body}`); // debug login form submission
|
||||
return cmFetch<Token>(`/api/users/login`, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
|
|
|
|||
36
lib/logging/logger.ts
Normal file
36
lib/logging/logger.ts
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import winston from "winston";
|
||||
|
||||
const logger = winston.createLogger({
|
||||
level: "info",
|
||||
format: winston.format.json(),
|
||||
defaultMeta: { service: "user-service" },
|
||||
transports: [
|
||||
//
|
||||
// - Write all logs with importance level of `error` or higher to `error.log`
|
||||
// (i.e., error, fatal, but not other levels)
|
||||
//
|
||||
new winston.transports.File({ filename: "error.log", level: "error" }),
|
||||
//
|
||||
// - Write all logs with importance level of `info` or higher to `combined.log`
|
||||
// (i.e., fatal, error, warn, and info, but not trace)
|
||||
//
|
||||
new winston.transports.File({ filename: "combined.log" }),
|
||||
],
|
||||
});
|
||||
|
||||
//
|
||||
// If we're not in production then log to the `console` with the format:
|
||||
// `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
|
||||
//
|
||||
if (process.env.NODE_ENV !== "production") {
|
||||
logger.add(
|
||||
new winston.transports.Console({
|
||||
format: winston.format.simple(),
|
||||
}),
|
||||
);
|
||||
logger.configure({
|
||||
level: "debug",
|
||||
});
|
||||
}
|
||||
|
||||
export default logger;
|
||||
|
|
@ -4,11 +4,12 @@ import { redirect } from "next/navigation";
|
|||
|
||||
import { createUser, loginUser } from "../api/helpers/users";
|
||||
import { Token } from "../api/types";
|
||||
import logger from "../logging/logger";
|
||||
|
||||
export async function login(formData: FormData) {
|
||||
"use server";
|
||||
const token = await loginUser(formData);
|
||||
console.log(`Fetched following token for login: ${token}`);
|
||||
logger.log("debug", `Fetched following token for login: ${token}`); // token check for backend debugging
|
||||
await createSession(token);
|
||||
redirect("/Admin/Overview");
|
||||
}
|
||||
|
|
@ -17,6 +18,7 @@ export async function signup(formData: FormData) {
|
|||
// Technically same code as login for now but will do different stuff with it later so separating it early on
|
||||
"use server";
|
||||
const token = await createUser(formData);
|
||||
logger.log("debug", `Fetched following token for login: ${token}`); // token check for backend debugging
|
||||
await createSession(token);
|
||||
redirect("/Admin/Overview");
|
||||
}
|
||||
|
|
@ -35,7 +37,7 @@ export async function createSession(token: Token) {
|
|||
|
||||
export async function getSessionToken() {
|
||||
const cookieStore = await cookies();
|
||||
console.log(cookieStore.getAll());
|
||||
logger.log("debug", cookieStore.getAll()); // debug: log cookies when checking for session token, ideally logs session token too
|
||||
const token = cookieStore.get("access_token")?.value;
|
||||
|
||||
return token ? token : null;
|
||||
|
|
|
|||
Loading…
Reference in a new issue