Node.js winston未知记录器级别:未定义
我使用Node.js winston未知记录器级别:未定义,node.js,express,logging,winston,Node.js,Express,Logging,Winston,我使用winston记录错误,在生产过程中记录到文件,在开发过程中记录到控制台。我还设置了其他日志传输,即向slack发送错误的自定义传输 下面是我的logger.js const expressWinston = require('express-winston'); const { createLogger, format, transports } = require('winston'); const SlackAPIAccessDevTransport = require('./win
winston
记录错误,在生产过程中记录到文件,在开发过程中记录到控制台
。我还设置了其他日志传输,即向slack发送错误的自定义传输
下面是我的logger.js
const expressWinston = require('express-winston');
const { createLogger, format, transports } = require('winston');
const SlackAPIAccessDevTransport = require('./winston-slack');
const accessLogger = expressWinston.logger({
transports: [
new SlackAPIAccessDevTransport(),
],
format: format.combine(
format.colorize(),
format.json(),
),
});
const logToFile = createLogger({
transports: [
new transports.File({
json: true,
maxFiles: 5,
level: 'error',
colorize: false,
filename: 'logs/error.log',
maxsize: 5242880, // 5MB
}),
],
});
const logToConsole = createLogger({
level: 'info',
transports: [
new transports.Console({
format: format.combine(
format.colorize(),
format.simple(),
),
}),
],
});
module.exports = {
logToFile,
logToConsole,
accessLogger,
};
登录到文件工作正常,但对于控制台
传输,我得到的级别未定义
这是我的错误
const Logger = require('../utils/logger');
module.exports = async (err, req, res, next) => {
// log any kind of error
console.log(err);
const errorData = {
date: new Date().toISOString(),
env: process.env.NODE_ENV,
level: 'error',
name: err.name,
message: err.message,
api: req.url,
method: req.method,
stack: err.stack,
body: req.body,
client: req.connection.remoteAddress,
};
if (process.env.NODE_ENV === 'production') {
Logger.logToFile.log(errorData);
} else {
Logger.logToConsole.log(err);
}
return res.status(500).send('Something went wrong!');
}
你需要使用
errors
格式允许您将JavaScript错误的实例直接传递给记录器。它允许您指定是否包含堆栈跟踪
此外,最好为error
日志添加自定义格式
例如
结果:
2021-01-22T06:46:07.088Z error: Error: network
at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/src/stackoverflow/65822479/index.ts:19:13)
at Module._compile (internal/modules/cjs/loader.js:1158:30)
at Module.m._compile (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/index.ts:530:23)
at Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
at Object.require.extensions.<computed> [as .ts] (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/index.ts:533:12)
at Module.load (internal/modules/cjs/loader.js:1002:32)
at Function.Module._load (internal/modules/cjs/loader.js:901:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at main (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/bin.ts:212:14)
at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/bin.ts:470:3)
2021-01-22T06:46:07.089Z error: Error: network
at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/src/stackoverflow/65822479/index.ts:19:13)
at Module._compile (internal/modules/cjs/loader.js:1158:30)
at Module.m._compile (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/index.ts:530:23)
at Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
at Object.require.extensions.<computed> [as .ts] (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/index.ts:533:12)
at Module.load (internal/modules/cjs/loader.js:1002:32)
at Function.Module._load (internal/modules/cjs/loader.js:901:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at main (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/bin.ts:212:14)
at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/bin.ts:470:3)
2021-01-22T06:46:07.088Z错误:错误:网络
反对。(/Users/ldu020/workspace/github.com/mrdulin/expressjs research/src/stackoverflow/65822479/index.ts:19:13)
at模块编译(内部/modules/cjs/loader.js:1158:30)
在Module.m._compile(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/index.ts:530:23)
at Module._extensions..js(internal/modules/cjs/loader.js:1178:10)
在Object.require.extensions。[as.ts](/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/index.ts:533:12)
at Module.load(内部/modules/cjs/loader.js:1002:32)
at Function.Module._load(内部/modules/cjs/loader.js:901:14)
在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:74:12)
主要(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/bin.ts:212:14)
反对。(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/bin.ts:470:3)
2021-01-22T06:46:07.089Z错误:错误:网络
反对。(/Users/ldu020/workspace/github.com/mrdulin/expressjs research/src/stackoverflow/65822479/index.ts:19:13)
at模块编译(内部/modules/cjs/loader.js:1158:30)
在Module.m._compile(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/index.ts:530:23)
at Module._extensions..js(internal/modules/cjs/loader.js:1178:10)
在Object.require.extensions。[as.ts](/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/index.ts:533:12)
at Module.load(内部/modules/cjs/loader.js:1002:32)
at Function.Module._load(内部/modules/cjs/loader.js:901:14)
在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:74:12)
主要(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/bin.ts:212:14)
反对。(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/bin.ts:470:3)
您需要使用
errors
格式允许您将JavaScript错误的实例直接传递给记录器。它允许您指定是否包含堆栈跟踪
此外,最好为error
日志添加自定义格式
例如
结果:
2021-01-22T06:46:07.088Z error: Error: network
at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/src/stackoverflow/65822479/index.ts:19:13)
at Module._compile (internal/modules/cjs/loader.js:1158:30)
at Module.m._compile (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/index.ts:530:23)
at Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
at Object.require.extensions.<computed> [as .ts] (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/index.ts:533:12)
at Module.load (internal/modules/cjs/loader.js:1002:32)
at Function.Module._load (internal/modules/cjs/loader.js:901:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at main (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/bin.ts:212:14)
at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/bin.ts:470:3)
2021-01-22T06:46:07.089Z error: Error: network
at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/expressjs-research/src/stackoverflow/65822479/index.ts:19:13)
at Module._compile (internal/modules/cjs/loader.js:1158:30)
at Module.m._compile (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/index.ts:530:23)
at Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
at Object.require.extensions.<computed> [as .ts] (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/index.ts:533:12)
at Module.load (internal/modules/cjs/loader.js:1002:32)
at Function.Module._load (internal/modules/cjs/loader.js:901:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
at main (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/bin.ts:212:14)
at Object.<anonymous> (/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts-node/src/bin.ts:470:3)
2021-01-22T06:46:07.088Z错误:错误:网络
反对。(/Users/ldu020/workspace/github.com/mrdulin/expressjs research/src/stackoverflow/65822479/index.ts:19:13)
at模块编译(内部/modules/cjs/loader.js:1158:30)
在Module.m._compile(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/index.ts:530:23)
at Module._extensions..js(internal/modules/cjs/loader.js:1178:10)
在Object.require.extensions。[as.ts](/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/index.ts:533:12)
at Module.load(内部/modules/cjs/loader.js:1002:32)
at Function.Module._load(内部/modules/cjs/loader.js:901:14)
在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:74:12)
主要(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/bin.ts:212:14)
反对。(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/bin.ts:470:3)
2021-01-22T06:46:07.089Z错误:错误:网络
反对。(/Users/ldu020/workspace/github.com/mrdulin/expressjs research/src/stackoverflow/65822479/index.ts:19:13)
at模块编译(内部/modules/cjs/loader.js:1158:30)
在Module.m._compile(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/index.ts:530:23)
at Module._extensions..js(internal/modules/cjs/loader.js:1178:10)
在Object.require.extensions。[as.ts](/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/index.ts:533:12)
at Module.load(内部/modules/cjs/loader.js:1002:32)
at Function.Module._load(内部/modules/cjs/loader.js:901:14)
在Function.executeUserEntryPoint[作为runMain](internal/modules/run_main.js:74:12)
主要(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/bin.ts:212:14)
反对。(/Users/ldu020/workspace/github.com/mrdulin/mongoose5.x-lab/node_modules/ts node/src/bin.ts:470:3)
我仍然获得[winston]未知记录器级别:未定义的,但是如果我将错误数据
传递给控制台记录器,它将工作logToConsole.log(errorData)
但传递错误
抛出未定义的记录器级别,我仍然获得[winston]未知记录器级别:未定义的
,但是,如果我将errorData
传递给控制台记录器,它将工作logToConsole.log(errorData)
但传递err
会抛出未定义的记录器级别