【问题标题】:Pino error log is empty, although error object contains informationPino 错误日志为空,尽管错误对象包含信息
【发布时间】:2019-09-02 14:50:17
【问题描述】:

我写了一个小错误处理函数,在 AXIOS 请求之后调用,如下所示:

try {
 ...
} catch (error) {
    handleAxiosError(error);
}

函数如下:

function handleAxiosError(error) {
    if (error.response !== undefined) {
        logger.error(`Received a HTTP error. Status code: ${error.response.status}, Data: ${error.response.data}`);
    } else if (error.request !== undefined) {
        logger.error(error.request);
    } else {
        logger.error(error.message);
    }
    throw new Error(error);
}

虽然抛出了错误:

(节点:94324)UnhandledPromiseRejectionWarning:错误:错误:连接 ECONNREFUSED 127.0.0.1:6557 在句柄AxiosError (C:\pathtoapp\utils\utils.js:66:11)

Pino 仅将以下内容保存到日志中。我找不到问题。这是异步问题吗?

{"level":50,"time":1567435455281,"pid":94324,"hostname":"host","name":"app","re​​s":{},"v":1 }

谢谢!

【问题讨论】:

  • 你试过logger.error(error.data);吗?

标签: javascript node.js logging axios


【解决方案1】:

使用异步日志记录(Pino 记录器的默认设置)时,进程可能在处理完所有日志记录之前就退出了。

https://github.com/pinojs/pino/blob/HEAD/docs/asynchronous.md

你也可以把日志改成同步的,就不会有这个问题了:

const dest = pino.destination({ sync: true })

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 2018-02-12
    • 1970-01-01
    • 2018-10-30
    • 2012-11-03
    相关资源
    最近更新 更多