rsshub
Version:
Make RSS Great Again!
47 lines (43 loc) • 1.48 kB
text/typescript
import path from 'node:path';
import winston from 'winston';
import { config } from '@/config';
let transports: (typeof winston.transports.File)[] = [];
if (!config.noLogfiles && !process.env.VERCEL) {
transports = [
new winston.transports.File({
filename: path.resolve('logs/error.log'),
level: 'error',
}),
new winston.transports.File({ filename: path.resolve('logs/combined.log') }),
];
}
const logger = winston.createLogger({
level: config.loggerLevel,
format: winston.format.combine(
winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }),
winston.format.printf((info) =>
JSON.stringify({
timestamp: info.timestamp,
level: info.level,
message: info.message,
})
)
),
transports,
});
//
// If we're not in production then log to the `console` with the format:
// `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
//
if (!config.isPackage) {
logger.add(
new winston.transports.Console({
format: winston.format.printf((info) => {
const infoLevel = winston.format.colorize().colorize(info.level, config.showLoggerTimestamp ? `[${info.timestamp}] ${info.level}` : info.level);
return `${infoLevel}: ${info.message}`;
}),
silent: process.env.NODE_ENV === 'test',
})
);
}
export default logger;