Catch Error: getaddrinfo ENOTFOUND using winston
Catch Error: getaddrinfo ENOTFOUND using winston
我已经使用 winston 将日志推送到 logmatic 将近一年了,这周我不得不关闭它,因为我遇到随机连接错误导致生产服务器崩溃。我将其关闭作为临时修复,但我更喜欢像 try/catch 这样的东西,我试过了但没有用。
这是我当前的代码:
const Winston = require('winston')
require('winston-logstash')
const transports = []
transports.push(new Winston.transports.Console({
level: 'debug',
colorize: true,
prettyPrint: true
}))
try {
transports.push(new (Winston.transports.Logstash)({
level: 'info',
port: 10514,
host: 'api.logmatic.asdsadio',
meta: { logmaticKey: 'Xen03ppdS_Cm24hxbz1_kg' },
node_name: 'api'
}))
const logger = new (Winston.Logger)({
transports: transports
})
}
catch (err) {
console.log(err)
}
module.exports = logger
你可以
const methods = ['info', 'warn', 'error'];
methods.forEach(method => {
logger[method] = new Proxy(logger[method], {
apply: function(target, thisArg, args) {
try {
target.call(logger, ...args);
} catch(error) {
console.error(error);
}
},
});
});
刚初始化您的记录器之后,您正在弄清楚为什么会出现连接错误。至少,它应该可以防止崩溃。它基本上会拦截对 logger.info、logger.warn、logger.error[ 的每个调用=18=] 并将它们包裹在 try catch 周围。
我已经使用 winston 将日志推送到 logmatic 将近一年了,这周我不得不关闭它,因为我遇到随机连接错误导致生产服务器崩溃。我将其关闭作为临时修复,但我更喜欢像 try/catch 这样的东西,我试过了但没有用。
这是我当前的代码:
const Winston = require('winston')
require('winston-logstash')
const transports = []
transports.push(new Winston.transports.Console({
level: 'debug',
colorize: true,
prettyPrint: true
}))
try {
transports.push(new (Winston.transports.Logstash)({
level: 'info',
port: 10514,
host: 'api.logmatic.asdsadio',
meta: { logmaticKey: 'Xen03ppdS_Cm24hxbz1_kg' },
node_name: 'api'
}))
const logger = new (Winston.Logger)({
transports: transports
})
}
catch (err) {
console.log(err)
}
module.exports = logger
你可以
const methods = ['info', 'warn', 'error'];
methods.forEach(method => {
logger[method] = new Proxy(logger[method], {
apply: function(target, thisArg, args) {
try {
target.call(logger, ...args);
} catch(error) {
console.error(error);
}
},
});
});
刚初始化您的记录器之后,您正在弄清楚为什么会出现连接错误。至少,它应该可以防止崩溃。它基本上会拦截对 logger.info、logger.warn、logger.error[ 的每个调用=18=] 并将它们包裹在 try catch 周围。