Files
RSSHub/lib/utils/logger.ts
T
Tony b84bb92a8a style: replace unicorn/no-for-loop w/ typescript/prefer-for-of (#20798)
* style: replace unicorn/no-for-loop w/ typescript/prefer-for-of

* style: fix typescript-eslint/prefer-for-of

* style: fix typescript/no-inferrable-types

* style: fix typescript-eslint/consistent-generic-constructors

* style: typescript-eslint/consistent-type-assertions

* style: fix typescript-eslint/array-type

* fix: revert .entries() in d96ca62d3d
2026-01-02 09:42:24 +08:00

49 lines
1.4 KiB
TypeScript

import path from 'node:path';
import winston from 'winston';
import { config } from '@/config';
let transports: Array<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;