Javascript log(responseObject)输出可以';不能通过对象引用,这正是我拼命想做的

Javascript log(responseObject)输出可以';不能通过对象引用,这正是我拼命想做的,javascript,console.log,newrelic,Javascript,Console.log,Newrelic,我试图检测与网站的SSL握手何时失败。现在,我有一个响应对象,如下所示: let r = request({url:"url", method: "HEAD", ...}, (res) => { console.log(res) }) 这将输出以下日志: { Error: write EPROTO 139898579974016:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../dep

我试图检测与网站的SSL握手何时失败。现在,我有一个响应对象,如下所示:

let r = request({url:"url", method: "HEAD", ...}, (res) => { console.log(res) })
这将输出以下日志:

{ Error: write EPROTO 139898579974016:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:1494:SSL alert number 40
139898579974016:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:659:
at exports._errnoException (util.js:1020:11)
at WriteWrap.afterWrite (net.js:800:14) code: 'EPROTO', errno: 'EPROTO', syscall: 'write' }
看起来很简单,对吧?只需从响应对象中检索消息。但是,当我在response对象中查找键时,却找不到消息

console.log(Object.keys(res)) // [ 'code', 'errno', 'syscall' ]
r.on("error") {console.log(error)} // {code: 'EPROTO', errno: 'EPROTO', syscall: 'write' }
那么如何检索记录的其余内容呢?


我正在使用New Relic Synthetics查询该网站,该网站针对该网站运行Selenium Webdriver 3.50实例(使用节点6.11.2)。我不认为这有什么区别,因为我们讨论的是console.log()。它确实限制了我的选择,尽管我只能选择New Relic批准的nodejs模块,但是如果有任何非标准的模块可以帮助我,我会找到一种方法来测试。

错误对象中的主要信息在它的
message
属性中

如果存在其他属性,则它们可能不可枚举,和/或可能被继承<代码>对象。键不会显示不可枚举或继承的属性

要查看不可枚举的属性(以及可枚举属性,但不是以符号命名的属性),可以使用。要查看符号命名属性(您可能不需要这些属性),可以使用。如果需要查看继承的,可以在循环中使用它,在原型链中遍历

// Assuming `res` is the starting point, and assuming you don't want properties
// from `Object.prototype` (if it's in the prototype chain)
let allPropertyNames = [];
for (let obj = res; obj && obj !== Object.prototype; obj = Object.getPrototypeOf(obj)) {
    allPropertyNames.push(...Object.getOwnPropertyNames(obj));
}        
Object.getOwnPropertyNames(res)显示res.message,其中包含console.log()中显示的消息。现在我可以继续我的工作了+1谢谢