Pino错误日志为空,尽管错误对象包含信息

时间:2019-09-02 14:50:17

标签: javascript node.js logging axios

我编写了一个小的错误处理函数,该函数在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     在handleAxiosError(C:\ pathtoapp \ utils \ utils.js:66:11)

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

{“ level”:50,“ time”:1567435455281,“ pid”:94324,“ hostname”:“ host”,“ name”:“ app”,“ res”:{},“ v”:1 }

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

您还可以将日志记录更改为同步,这样就不会出现此问题:

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