Spaces:
Paused
Paused
| const winston = require('winston'); | |
| const DailyRotateFile = require('winston-daily-rotate-file'); | |
| const path = require('path'); | |
| // Define log format | |
| const logFormat = winston.format.combine( | |
| winston.format.timestamp({ | |
| format: 'YYYY-MM-DD HH:mm:ss' | |
| }), | |
| winston.format.errors({ stack: true }), | |
| winston.format.splat(), | |
| winston.format.json() | |
| ); | |
| // Create logs directory if it doesn't exist | |
| const logDir = 'logs'; | |
| // Configure daily rotate file transport | |
| const fileRotateTransport = new DailyRotateFile({ | |
| filename: path.join(logDir, 'stremio-addon-manager-%DATE%.log'), | |
| datePattern: 'YYYY-MM-DD', | |
| maxSize: '20m', | |
| maxFiles: '14d', | |
| createSymlink: true, | |
| symlinkName: 'current.log' | |
| }); | |
| // Create logger instance | |
| const logger = winston.createLogger({ | |
| level: process.env.NODE_ENV === 'production' ? 'info' : 'debug', | |
| format: logFormat, | |
| transports: [ | |
| // Write all logs with level 'error' and below to error.log | |
| new winston.transports.File({ | |
| filename: path.join(logDir, 'error.log'), | |
| level: 'error', | |
| format: winston.format.combine( | |
| winston.format.timestamp(), | |
| winston.format.json() | |
| ) | |
| }), | |
| // Write all logs with level 'info' and below to combined.log | |
| fileRotateTransport | |
| ] | |
| }); | |
| // If we're not in production, also log to the console with colorized output | |
| if (process.env.NODE_ENV !== 'production') { | |
| logger.add(new winston.transports.Console({ | |
| format: winston.format.combine( | |
| winston.format.colorize(), | |
| winston.format.simple(), | |
| winston.format.printf(({ level, message, timestamp, stack }) => { | |
| if (stack) { | |
| return `${timestamp} ${level}: ${message}\n${stack}`; | |
| } | |
| return `${timestamp} ${level}: ${message}`; | |
| }) | |
| ) | |
| })); | |
| } | |
| // Create a stream object with a write function for Morgan | |
| logger.stream = { | |
| write: function(message) { | |
| logger.info(message.trim()); | |
| } | |
| }; | |
| module.exports = logger; |