Spaces:
Sleeping
Sleeping
| import pino from 'pino'; | |
| import fs from 'fs'; | |
| import path from 'path'; | |
| import dotenv from 'dotenv'; | |
| dotenv.config(); | |
| const logDir = path.dirname(process.env.LOG_FILE || 'logs/simulator.log'); | |
| const logFile = process.env.LOG_FILE || 'logs/simulator.log'; | |
| if (!fs.existsSync(logDir)) { | |
| fs.mkdirSync(logDir, { recursive: true }); | |
| } | |
| const targets = [ | |
| { | |
| level: process.env.LOG_LEVEL || 'info', | |
| target: 'pino-pretty', | |
| options: { | |
| colorize: true, | |
| translateTime: 'SYS:standard', | |
| ignore: 'pid,hostname', | |
| }, | |
| }, | |
| { | |
| level: process.env.LOG_LEVEL || 'info', | |
| target: 'pino/file', | |
| options: { | |
| destination: logFile, | |
| mkdir: true, | |
| append: true, | |
| }, | |
| }, | |
| ]; | |
| const logger = pino( | |
| { | |
| level: process.env.LOG_LEVEL || 'info', | |
| base: { pid: false }, | |
| timestamp: () => `,"time":"${new Date().toISOString()}"`, | |
| redact: { | |
| paths: ['github.token', 'ai.huggingface.apiKey'], | |
| censor: '[REDACTED]', | |
| }, | |
| }, | |
| pino.transport({ targets }) | |
| ); | |
| const originalError = logger.error.bind(logger); | |
| logger.error = (obj, msg, ...args) => { | |
| if (obj instanceof Error) { | |
| originalError( | |
| { | |
| err: { | |
| message: obj.message, | |
| stack: obj.stack, | |
| name: obj.name, | |
| }, | |
| }, | |
| msg || obj.message, | |
| ...args | |
| ); | |
| } else { | |
| originalError(obj, msg, ...args); | |
| } | |
| }; | |
| export default logger; | |