Add in Pino logging and make UI consistent across the app.
This commit is contained in:
parent
727746030c
commit
300040bd58
19 changed files with 590 additions and 235 deletions
|
@ -16,6 +16,8 @@ import session from 'express-session';
|
|||
import { PrismaSessionStore } from '@quixo3/prisma-session-store';
|
||||
import { PrismaClient } from '@prisma/client';
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
import pino from 'pino';
|
||||
import pinoHttp from 'pino-http';
|
||||
import apiRoutes from './routes/api.js';
|
||||
import authRoutes from './routes/auth.js';
|
||||
import chatRoutes from './routes/chat.js';
|
||||
|
@ -27,6 +29,47 @@ import { requireAuth } from './middlewares/authMiddleware.js';
|
|||
|
||||
dotenv.config();
|
||||
|
||||
// Initialize Pino logger
|
||||
const targets = [];
|
||||
|
||||
// Console logging (pretty-printed in development)
|
||||
if (process.env.NODE_ENV !== 'production')
|
||||
{
|
||||
targets.push({
|
||||
target: 'pino-pretty',
|
||||
options: {
|
||||
colorize: true
|
||||
},
|
||||
level: process.env.LOG_LEVEL || 'info'
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
// Basic console logging in production
|
||||
targets.push({
|
||||
target: 'pino/file', // Log to stdout in production
|
||||
options: { destination: 1 }, // 1 is stdout
|
||||
level: process.env.LOG_LEVEL || 'info'
|
||||
});
|
||||
}
|
||||
|
||||
// Database logging via custom transport
|
||||
targets.push({
|
||||
target: './utils/prisma-pino-transport.js', // Path to the custom transport
|
||||
options: {}, // No specific options needed for this transport
|
||||
level: process.env.DB_LOG_LEVEL || 'info' // Separate level for DB logging if needed
|
||||
});
|
||||
|
||||
const logger = pino({
|
||||
level: process.env.LOG_LEVEL || 'info', // Overall minimum level
|
||||
transport: {
|
||||
targets: targets
|
||||
}
|
||||
});
|
||||
|
||||
// Initialize pino-http middleware
|
||||
const httpLogger = pinoHttp({ logger });
|
||||
|
||||
// Define Relying Party details (Update with your actual details)
|
||||
export const rpID = process.env.NODE_ENV === 'production' ? 'stylepoint.uk' : 'localhost';
|
||||
export const rpName = 'StylePoint';
|
||||
|
@ -39,9 +82,12 @@ const prisma = new PrismaClient();
|
|||
|
||||
const app = express();
|
||||
|
||||
// Add pino-http middleware
|
||||
app.use(httpLogger);
|
||||
|
||||
if(!process.env.SESSION_SECRET)
|
||||
{
|
||||
console.error('SESSION_SECRET environment variable is not set. Please set it to a strong secret key.');
|
||||
logger.error('SESSION_SECRET environment variable is not set. Please set it to a strong secret key.');
|
||||
process.exit(1); // Exit the process if the secret is not set
|
||||
}
|
||||
|
||||
|
@ -70,15 +116,14 @@ app.use(session({
|
|||
// Run daily at 1:00 AM server time (adjust as needed)
|
||||
cron.schedule('0 1 * * *', async() =>
|
||||
{
|
||||
console.log('Running scheduled Mantis summary task...');
|
||||
try
|
||||
{
|
||||
await generateAndStoreMantisSummary();
|
||||
console.log('Scheduled Mantis summary task completed.');
|
||||
logger.info('Scheduled Mantis summary task completed successfully.');
|
||||
}
|
||||
catch (error)
|
||||
{
|
||||
console.error('Error running scheduled Mantis summary task:', error);
|
||||
logger.error({ error }, 'Error running scheduled Mantis summary task');
|
||||
}
|
||||
}, {
|
||||
scheduled: true,
|
||||
|
@ -108,5 +153,5 @@ app.use(express.static('public', { index: false }));
|
|||
|
||||
app.listen(8000, () =>
|
||||
{
|
||||
console.log('Server is running on http://localhost:8000');
|
||||
logger.info('Server is running on http://localhost:8000');
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue