Я пытался регистрировать ошибки ax ios, поэтому я определил пользовательскую ошибку и зарегистрировался с помощью 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-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.error (), я получил это
{"name":"MyError","myerror":{"message":"Request failed with status code 500","name":"Error","stack":"Error: Request failed with status code 500\n at createError (/Users/woonggeunjang/dev/onda-cms/node_modules/axios/lib/core/createError.js:16:15)\n at settle (/Users/woonggeunjang/dev/onda-cms/node_modules/axios/lib/core/settle.js:17:12)\n at IncomingMessage.handleStreamEnd (/Users/woonggeunjang/dev/onda-cms/node_modules/axios/lib/adapters/http.js:236:11)\n at IncomingMessage.emit (events.js:203:15)\n at IncomingMessage.EventEmitter.emit (domain.js:448:20)\n at endReadableNT (_stream_readable.js:1145:12)\n at process._tickCallback (internal/process/next_tick.js:63:19)","config":{"url":"https://ptsv2.com/t/gcnad-1585724700/post","method":"post","data":"hmm","headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","User-Agent":"axios/0.19.2","Content-Length":3},"transformRequest":[null],"transformResponse":[null],"timeout":0,"xsrfCookieName":"XSRF-TOKEN","xsrfHeaderName":"X-XSRF-TOKEN","maxContentLength":-1}},"level":"error","message":"mm","stack":"MyError: \n at new MyError (/Users/woonggeunjang/dev/onda-cms/src/axios-test.ts:16:15)\n at /Users/woonggeunjang/dev/onda-cms/src/axios-test.ts:29:15\n at Generator.throw (<anonymous>)\n at rejected (/Users/woonggeunjang/dev/onda-cms/src/axios-test.ts:6:65)\n at process._tickCallback (internal/process/next_tick.js:68:7)","timestamp":"2020-04-01T12:43:45.530Z"}
Это мои коды
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 );
});
Похоже, что при использовании winston применяется некоторое форматирование. Если я установлю формат prettyPrint, то отобразятся подробности ошибки.
Обновлено Это мой конфиг Winston
const consoleTransport = new transports.Console();
const Logger = createLogger({
transports: [consoleTransport],
format: format.combine(
format.timestamp(),
format.json(),
),
});
Заранее спасибо.