Winston 仅记录 .info 错误,不将错误记录到文件或 mongodb
Winston is only logging .info errors and doesn't log error to file or mongodb
我的后端使用 express-mongoose,记录器使用 winston。问题是 winston 只记录信息消息而不是错误
server.log 中的日志
错误消息只记录在控制台上,但既不在文件中,也不在 mongodb
记录器代码
const { createLogger, format, transports } = require('winston');
// Import mongodb
require('winston-mongodb');
module.exports = createLogger({
transports:[
//Console transport
new transports.Console(),
// File transport
new transports.File({
filename: 'logs/server.log',
format:format.combine(
format.timestamp({format: 'MMM-DD-YYYY HH:mm:ss'}),
format.align(),
format.printf(info => `${info.level}: ${[info.timestamp]}: ${info.message}`),
)}),
// MongoDB transport
new transports.MongoDB({
level: 'error',
//mongo database connection link
db : 'mongodb://localhost/logs',
options: {
useUnifiedTopology: true
},
// A collection to save json formatted logs
collection: 'edushare_logs',
format: format.combine(
format.timestamp(),
// Convert logs to a json format
format.json())
})]
});
我没有定义 jwt 创建了一个错误。
代码
const logger = require("./utils/logger")
if (!config.get("jwtPrivateKey")){
logger.error("FATAL ERROR!! JWT is not defined!")
process.exit(1)
}
winston“控制台传输”是同步的,但是写入 mongo 或文件的进程是异步的。在这种情况下,您可以使用 winston 函数回调。试试这个:
const logger = require("./utils/logger")
if (!config.get("jwtPrivateKey")) {
logger.error("FATAL ERROR!! JWT is not defined!", () => {
exit(1);
});
}
我的后端使用 express-mongoose,记录器使用 winston。问题是 winston 只记录信息消息而不是错误
server.log 中的日志
错误消息只记录在控制台上,但既不在文件中,也不在 mongodb
记录器代码
const { createLogger, format, transports } = require('winston');
// Import mongodb
require('winston-mongodb');
module.exports = createLogger({
transports:[
//Console transport
new transports.Console(),
// File transport
new transports.File({
filename: 'logs/server.log',
format:format.combine(
format.timestamp({format: 'MMM-DD-YYYY HH:mm:ss'}),
format.align(),
format.printf(info => `${info.level}: ${[info.timestamp]}: ${info.message}`),
)}),
// MongoDB transport
new transports.MongoDB({
level: 'error',
//mongo database connection link
db : 'mongodb://localhost/logs',
options: {
useUnifiedTopology: true
},
// A collection to save json formatted logs
collection: 'edushare_logs',
format: format.combine(
format.timestamp(),
// Convert logs to a json format
format.json())
})]
});
我没有定义 jwt 创建了一个错误。 代码
const logger = require("./utils/logger")
if (!config.get("jwtPrivateKey")){
logger.error("FATAL ERROR!! JWT is not defined!")
process.exit(1)
}
winston“控制台传输”是同步的,但是写入 mongo 或文件的进程是异步的。在这种情况下,您可以使用 winston 函数回调。试试这个:
const logger = require("./utils/logger")
if (!config.get("jwtPrivateKey")) {
logger.error("FATAL ERROR!! JWT is not defined!", () => {
exit(1);
});
}