abedelbahnasy55's picture
feat: cloud simulator - Docker, dashboard, auto-start
ccb6b75
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;