fix exception thrown during logging, include stack trace

This commit is contained in:
Florian Dold 2020-09-01 15:52:13 +05:30
parent 5c0ee81e26
commit 5e7149f79e
No known key found for this signature in database
GPG Key ID: D2E4F00F29D02A4B
3 changed files with 21 additions and 9 deletions

View File

@ -96,7 +96,9 @@ export async function guardOperationException<T>(
const opErr = makeErrorDetails(
TalerErrorCode.WALLET_UNEXPECTED_EXCEPTION,
`unexpected exception (message: ${e.message})`,
{},
{
stack: e.stack,
},
);
await onOpError(opErr);
throw new OperationFailedAndReportedError(opErr);

View File

@ -22,18 +22,29 @@ const isNode =
typeof process !== "undefined" && process.release.name === "node";
function writeNodeLog(
message: string,
message: any,
tag: string,
level: string,
args: any[],
): void {
process.stderr.write(`${new Date().toISOString()} ${tag} ${level} `);
process.stderr.write(message);
if (args.length != 0) {
process.stderr.write(" ");
process.stderr.write(JSON.stringify(args, undefined, 2));
try {
process.stderr.write(`${new Date().toISOString()} ${tag} ${level} `);
process.stderr.write(`${message}`);
if (args.length != 0) {
process.stderr.write(" ");
process.stderr.write(JSON.stringify(args, undefined, 2));
}
process.stderr.write("\n");
} catch (e) {
// This can happen when we're trying to log something that doesn't want to be
// converted to a string.
process.stderr.write(`${new Date().toISOString()} (logger) FATAL `);
if (e instanceof Error) {
process.stderr.write("failed to write log: ");
process.stderr.write(e.message);
}
process.stderr.write("\n");
}
process.stderr.write("\n");
}
/**

View File

@ -919,7 +919,6 @@ export class Wallet {
/**
* Implementation of the "wallet-core" API.
*/
private async dispatchRequestInternal(
operation: string,
payload: unknown,