Node.js 为什么Winston logger会删除错误细节
我试图记录axios错误,因此我定义了一个自定义错误,并使用Winston.error进行记录。 但是,不显示响应详细信息。奇怪的是console.log会打印所有的细节 通过console.log,我得到了这个Node.js 为什么Winston logger会删除错误细节,node.js,typescript,console.log,winston,Node.js,Typescript,Console.log,Winston,我试图记录axios错误,因此我定义了一个自定义错误,并使用Winston.error进行记录。 但是,不显示响应详细信息。奇怪的是console.log会打印所有的细节 通过console.log,我得到了这个 { MyError: at new MyError (src/axios-test.ts:16:15) at src/axios-test.ts:29:15 at Generator.throw (<anonymous>) at rejected (/src/axios-t
{ MyError:
at new MyError (src/axios-test.ts:16:15)
at src/axios-test.ts:29:15
at Generator.throw (<anonymous>)
at rejected (/src/axios-test.ts:6:65)
at process._tickCallback (internal/process/next_tick.js:68:7)
name: 'MyError',
myerror:
{ Error: Request failed with status code 500
at createError (/Users/woonggeunjang/dev/node_modules/axios/lib/core/createError.js:16:15)
at settle (/Users/dev/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/Users/dev/node_modules/axios/lib/adapters/http.js:236:11)
at IncomingMessage.emit (events.js:203:15)
at IncomingMessage.EventEmitter.emit (domain.js:448:20)
at endReadableNT (_stream_readable.js:1145:12)
at process._tickCallback (internal/process/next_tick.js:63:19)
config:
{ url: 'https://ptsv2.com/t/gcnad-1585724700/post',
method: 'post',
data: 'hmm',
headers: [Object],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
adapter: [Function: httpAdapter],
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
validateStatus: [Function: validateStatus] },
request:
ClientRequest {
domain: null,
_events: [Object],
_eventsCount: 6,
_maxListeners: undefined,
output: [],
outputEncodings: [],
outputCallbacks: [],
outputSize: 0,
writable: true,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
socket: [TLSSocket],
connection: [TLSSocket],
_header:
'POST /t/gcnad-1585724700/post HTTP/1.1\r\nAccept: application/json, text/plain, */*\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: axios/0.19.2\r\nContent-Length: 3\r\nHost: ptsv2.com\r\nConnection: close\r\n\r\n',
_onPendingData: [Function: noopPendingOutput],
agent: [Agent],
socketPath: undefined,
timeout: undefined,
method: 'POST',
path: '/t/gcnad-1585724700/post',
_ended: true,
res: [IncomingMessage],
aborted: undefined,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
_redirectable: [Writable],
[Symbol(isCorked)]: false,
[Symbol(outHeadersKey)]: [Object] },
response:
{ status: 500,
statusText: 'Internal Server Error',
headers: [Object],
config: [Object],
request: [ClientRequest],
data: 'Thank you for this dump. I hope you have a lovely day!' },
isAxiosError: true,
toJSON: [Function] } }
似乎在使用winston时应用了一些格式。
如果设置预打印格式,则显示错误详细信息
更新
这是我的温斯顿配置
const consoleTransport = new transports.Console();
const Logger = createLogger({
transports: [consoleTransport],
format: format.combine(
format.timestamp(),
format.json(),
),
});
提前谢谢。显示您的winston配置我刚刚添加了我的winston配置查看显示您的winston配置我刚刚添加了我的winston配置查看
export default class MyError extends Error {
myerror: string;
constructor(error: string) {
super();
Object.setPrototypeOf(this, new.target.prototype);
this.name = 'MyError';
this.myerror = error;
Error.captureStackTrace(this);
}
}
async function testPost () {
let res = null;
try {
res = await axios.post('https://ptsv2.com/t/gcnad-1585724700/post', 'hmm');
} catch (error) {
// throw new Error(error);
// console.log(error);
// Logger.error('hmm', error.stack);
throw(new MyError(error));
}
}
testPost().catch(error => {
// console.log(error);
Logger.error('mm', error );
});
const consoleTransport = new transports.Console();
const Logger = createLogger({
transports: [consoleTransport],
format: format.combine(
format.timestamp(),
format.json(),
),
});