diff --git a/dashboard/server/Logger.ts b/dashboard/server/Logger.ts index 3c7cd6a..9cf7f8a 100644 --- a/dashboard/server/Logger.ts +++ b/dashboard/server/Logger.ts @@ -4,12 +4,13 @@ import winston from 'winston'; const { combine, timestamp, json, errors } = winston.format; +const timestampFormat = () => { return new Date().toLocaleString('it-IT', { timeZone: 'Europe/Rome' }); } export const logger = winston.createLogger({ format: combine( errors({ stack: true }), timestamp({ - format: 'DD-MM-YYYY hh:mm:ss' + format: timestampFormat }), json() ), @@ -27,7 +28,7 @@ export const logger = winston.createLogger({ format: combine( winston.format.colorize({ all: true }), errors({ stack: true }), - timestamp({ format: 'DD-MM-YYYY hh:mm:ss' }), + timestamp({ format: timestampFormat }), winston.format.printf((info) => { if (info instanceof Error) { return `${info.timestamp} [${info.level}]: ${info.message}\n${info.stack}`; diff --git a/dashboard/server/init.ts b/dashboard/server/init.ts index 84455db..2f182db 100644 --- a/dashboard/server/init.ts +++ b/dashboard/server/init.ts @@ -2,7 +2,6 @@ import mongoose from "mongoose"; import { Redis } from "~/server/services/CacheService"; import EmailService from '@services/EmailService'; import StripeService from '~/server/services/StripeService'; -import { anomalyLoop } from "./services/AnomalyService"; import { logger } from "./Logger"; diff --git a/dashboard/server/middleware/02-logging.ts b/dashboard/server/middleware/02-logging.ts index 4754bf2..439af63 100644 --- a/dashboard/server/middleware/02-logging.ts +++ b/dashboard/server/middleware/02-logging.ts @@ -6,7 +6,21 @@ export default defineEventHandler(async (event) => { const ip = getRequestAddress(event); const user = getRequestUser(event); - event.node.res.on('finish', () => { + let payload: any | undefined; + + const headers = getHeaders(event); + + const xHeaders = Object.keys(headers) + .filter(e => e.startsWith('x-') && !e.startsWith("x-forwarded")) + .map(e => ({ [e]: headers[e] })); + + + if (event.method === 'POST' || event.method === 'DELETE') { + payload = await readBody(event) + } + + + event.node.res.on('finish', async () => { if (!event.context['performance-start']) return; const start = parseInt(event.context['performance-start']); if (isNaN(start)) return; @@ -15,11 +29,11 @@ export default defineEventHandler(async (event) => { const duration = (end - start); if (!user) { - logger.debug('Request without user', { path: event.path, method: event.method, ip, duration }); + logger.debug('Request without user', { path: event.path, method: event.method, ip, duration, xHeaders, payload }); } else if (!user.logged) { - logger.debug('Request as guest', { path: event.path, method: event.method, ip, duration }); + logger.debug('Request as guest', { path: event.path, method: event.method, ip, duration, xHeaders, payload }); } else { - logger.debug(`(${duration}ms) [${event.method}] ${event.path} { ${user.user.email} }`, { ip }); + logger.debug(`(${duration}ms) [${event.method}] ${event.path} { ${user.user.email} }`, { ip, duration, xHeaders, payload }); } // event.node.res.setHeader('X-Total-Response-Time', `${duration.toFixed(2)} ms`);