All checks were successful
Deploy to Test Environment / deploy-to-test (push) Successful in 10m38s
- Updated `useAuth` tests to use async functions for JSON responses to avoid promise resolution issues. - Changed `AdminBrandManager` tests to use `mockImplementation` for consistent mock behavior. - Enhanced `ProfileManager.Authenticated` tests to ensure proper error handling and assertions for partial updates. - Modified `SystemCheck` tests to prevent memory leaks by using `mockImplementation` for API calls. - Improved error handling in `ai.routes.ts` by refining validation schemas and adding error extraction utility. - Updated `auth.routes.test.ts` to inject mock logger for better error tracking. - Refined `flyer.routes.ts` to ensure proper validation and error handling for flyer ID parameters. - Enhanced `admin.db.ts` to ensure specific errors are re-thrown for better error management. - Updated `budget.db.test.ts` to improve mock behavior and ensure accurate assertions. - Refined `flyer.db.ts` to improve error handling for race conditions during store creation. - Enhanced `notification.db.test.ts` to ensure specific error types are tested correctly. - Updated `recipe.db.test.ts` to ensure proper handling of not found errors. - Improved `user.db.ts` to ensure consistent error handling for user retrieval. - Enhanced `flyerProcessingService.server.test.ts` to ensure accurate assertions on transformed data. - Updated `logger.server.ts` to disable transport in test environments to prevent issues. - Refined `queueService.workers.test.ts` to ensure accurate mocking of email service. - Improved `userService.test.ts` to ensure proper mock implementations for repository classes. - Enhanced `checksum.test.ts` to ensure reliable file content creation in tests. - Updated `pdfConverter.test.ts` to reset shared state objects and mock implementations before each test.
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
// src/services/logger.server.ts
|
|
/**
|
|
* SERVER-SIDE LOGGER
|
|
* This file configures and exports a singleton `pino` logger instance for
|
|
* server-side use, adhering to ADR-004 for structured JSON logging.
|
|
*/
|
|
import pino from 'pino';
|
|
|
|
const isProduction = process.env.NODE_ENV === 'production';
|
|
const isTest = process.env.NODE_ENV === 'test';
|
|
|
|
export const logger = pino({
|
|
level: isProduction ? 'info' : 'debug',
|
|
// Use pino-pretty for human-readable logs in development, and JSON in production.
|
|
// Disable transport in tests to prevent worker thread issues.
|
|
transport: (isProduction || isTest) ? undefined : {
|
|
target: 'pino-pretty',
|
|
options: {
|
|
colorize: true,
|
|
translateTime: 'SYS:standard',
|
|
ignore: 'pid,hostname', // These are useful in production, but noisy in dev.
|
|
},
|
|
},
|
|
// As per ADR-004, we centralize sanitization here.
|
|
// This automatically redacts sensitive fields from all log objects.
|
|
// The paths target keys within objects passed to the logger.
|
|
redact: {
|
|
paths: [
|
|
'req.headers.authorization',
|
|
'req.headers.cookie',
|
|
'*.body.password',
|
|
'*.body.newPassword',
|
|
'*.body.currentPassword',
|
|
],
|
|
censor: '[REDACTED]',
|
|
},
|
|
}); |