kra*_*r65 5 javascript error-handling logging node.js winston
在我的节点应用程序中,我使用Winstonjs记录器。今天,我的应用程序似乎以某种方式冻结了,但未能记录任何内容。我停止了应用程序并手动运行它,向我显示此错误
ReferenceError: totalValue is not defined
Run Code Online (Sandbox Code Playgroud)
我显然在代码中犯了一个错误,但是这里的主要问题是我无法从Winston日志中得知。
我在下面粘贴了我的Winston实现。我创建了它,以便可以简单地使用log('The log message');。但这不会记录任何发生的节点错误。
有人知道如何将每个发生的节点错误都记录到Winston日志中吗?
const myFormat = winston.format.printf(info => {
return `${info.timestamp} ${info.level}: ${info.message}`;
});
const logger = winston.createLogger({
level: 'info',
format: winston.format.combine(winston.format.timestamp(), myFormat), // winston.format.json(),
transports: [
new winston.transports.File({filename: 'logs/error.log', level: 'error'}),
new winston.transports.File({filename: 'logs/combined.log'}),
]
});
function log(message, level='info'){
if (typeof message === 'object'){
message = JSON.stringify(message);
}
logger[level](message);
}
Run Code Online (Sandbox Code Playgroud)
Winston 可以为您记录异常。来自文档:例外
使用 winston,可以从您的流程中捕获和记录 uncaughtException 事件。使用您自己的记录器实例,您可以在应用程序生命周期中或稍后创建时启用此行为:
const { createLogger, transports } = require('winston');
// Enable exception handling when you create your logger.
const logger = createLogger({
transports: [
new transports.File({ filename: 'combined.log' })
],
exceptionHandlers: [
new transports.File({ filename: 'exceptions.log' })
]
});
// Or enable it later on by adding a transport or using `.exceptions.handle`
const logger = createLogger({
transports: [
new transports.File({ filename: 'combined.log' })
]
});
// Call exceptions.handle with a transport to handle exceptions
logger.exceptions.handle(
new transports.File({ filename: 'exceptions.log' })
Run Code Online (Sandbox Code Playgroud)
你可以像这样简单地使用它:
const winston = require('winston');
require('winston-daily-rotate-file');
function getLogger(module) {
var transport = new (winston.transports.DailyRotateFile)({
filename: './logs/log',
datePattern: 'yyyy-MM-dd.',
prepend: true,
level: process.env.ENV === 'development' ? 'debug' : 'error'
});
const logger = new (winston.Logger)({
transports: [
transport
]
});
return logger;
}
module.exports = getLogger;
Run Code Online (Sandbox Code Playgroud)
将它放在一个单独的文件中,在您想要使用它的任何地方都需要它,然后您可以像这样使用它:
log.debug('This is debug statement!')
log.error('Logging exception here')
您始终可以更改对象中的日志级别transport,相应地您的语句将被记录。此外,此代码将每天轮换您的文件并根据日期创建一个新文件。这有助于避免出现一个大文件
| 归档时间: |
|
| 查看次数: |
7506 次 |
| 最近记录: |