#winston
Вопрос:
Я работаю над файлами журналов и поэтому использую winston версии 3.3.3 . У меня есть функция, которую я использую для вызова регистратора. По какой-то причине я не могу войти в систему с обещаниями отказа. Может ли кто-нибудь указать мне правильное направление, пожалуйста?
function DevLogger() {
const logFormat = printf(({ level, message, timestamp, stack }) => {
return `${timestamp} ${level}: ${stack || message}`;
});
let fileProperty = {
maxsize: 5242880,
maxFiles: 5,
colorize: false,
level: "error",
};
let options = {
uncaughtException: {
filename: config.get("uncaughtExceptionHandler"),
handleExceptions: true,
},
uncaughtRejection: {
filename: config.get("rejectionHandler"),
handleRejections: true,
},
console: {
format: logFormat,
colorize: true,
prettyPrint: true,
},
database: {
level: "info",
collection: "exceptionLog",
db: config.get("connectionstring"),
options: { useUnifiedTopology: true },
metaKey: "metadata",
},
};
return createLogger({
format: combine(
timestamp(),
errors({ stack: true }),
logFormat,
json(),
metadata()
),
transports: [
new transports.File(
Object.assign(options.uncaughtException, fileProperty)
),
new transports.MongoDB(options.database),
],
rejectionHandlers: [
new transports.File(
Object.assign(options.uncaughtRejection, fileProperty)
),
],
exitOnError: false,
});
}
module.exports = { buildDevLogger, error};
Здесь, в индексном файле, я просто выдаю ошибку отклонения обещания. Код приведен ниже
process.on("unhandledRejection", (ex) => {
console.log("UNHANDLED REJECTION DETECTED!!!!");
logger.error(ex.message, ex);
process.exit(1);
});
const p = Promise.reject(new Error("Something failed!!!"));
p.then(() => console.log("Done"));