Я могу запустить winston с параметром, в вашем случае имя файла.Я использую аналогичную настройку для регистрации отдельных задач cron (вместо параметра filename
используется параметр type
, который используется в качестве префикса в журнале, поэтому я могу выявлять проблемы в нескольких задачах cron в одном файле журнала).Я надеюсь, что вы знакомы с синтаксисом ES6.
utils / winston.js
const { createLogger, transports } = require('winston');
const infoLogger = filename => createLogger({
transports: [
new transports.File({
filename: 'info-' + filename,
level: 'info'
}),
new transports.Console(),
],
exitOnError: false
});
const errorLogger = filename => createLogger({
transports: [
new transports.File({
filename: 'error-' + filename,
level: 'error'
}),
new transports.Console(),
],
exitOnError: false
});
export default filename => ({
errorLogger: errorLogger(filename).error,
infoLogger: infoLogger(filename).info
});
Так что в своем коде вы можете импортировать пользовательские настройки winston из utils и инициализировать их с именем файла.Будьте осторожны, я в основном экспортирую только функцию ошибок из winston errorLogger(filename).error
, вы можете изменить ее приемлемым для вас способом
main.js
import logger from './utils/winston';
const { errorLogger, infoLogger } = logger('http.log');
errorLogger('some http fail'); // destination file => error-http.log
infoLogger('some http info'); // destination file => info-http.log