From 3a242911f79c4498cdaef7fc3eda3e37ea6056ec Mon Sep 17 00:00:00 2001 From: Pranav Jain Date: Tue, 22 Jul 2025 15:47:45 -0400 Subject: [PATCH 1/2] chore(mbe): add better error logging to file Ticket: WP-5313 --- src/api/enclaved/handlers/ecdsaMPCv2Initialize.ts | 3 +-- src/api/master/handlers/handleSendMany.ts | 6 ------ src/api/master/handlers/handleSignAndSendTxRequest.ts | 5 ----- src/api/master/handlers/recoveryConsolidationsWallet.ts | 4 +--- src/api/master/routers/enclavedExpressHealth.ts | 2 -- src/enclavedApp.ts | 3 +-- src/initConfig.ts | 8 ++++---- src/masterExpressApp.ts | 4 +--- src/routes/master.ts | 3 --- src/shared/responseHandler.ts | 3 +++ 10 files changed, 11 insertions(+), 30 deletions(-) diff --git a/src/api/enclaved/handlers/ecdsaMPCv2Initialize.ts b/src/api/enclaved/handlers/ecdsaMPCv2Initialize.ts index 6a053fc..3cc350d 100644 --- a/src/api/enclaved/handlers/ecdsaMPCv2Initialize.ts +++ b/src/api/enclaved/handlers/ecdsaMPCv2Initialize.ts @@ -42,8 +42,7 @@ export async function ecdsaMPCv2Initialize( encryptedData, }; } catch (error) { - logger.debug('Failed to initialize mpc key generation', error); - console.error('Encryption error details:', error); + logger.error('Failed to initialize mpc key generation', error); throw error; } } diff --git a/src/api/master/handlers/handleSendMany.ts b/src/api/master/handlers/handleSendMany.ts index 56fd042..f09c7bf 100644 --- a/src/api/master/handlers/handleSendMany.ts +++ b/src/api/master/handlers/handleSendMany.ts @@ -90,8 +90,6 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s } const keyIdIndex = params.source === 'user' ? KeyIndices.USER : KeyIndices.BACKUP; - logger.info(`Key ID index: ${keyIdIndex}`); - logger.info(`Key IDs: ${JSON.stringify(wallet.keyIds(), null, 2)}`); // Get the signing keychains const signingKeychain = await baseCoin.keychains().get({ @@ -140,8 +138,6 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s reqId, }); - logger.debug('Tx prebuild: %s', JSON.stringify(txPrebuilt, null, 2)); - // verify transaction prebuild try { const verified = await baseCoin.verifyTransaction({ @@ -163,8 +159,6 @@ export async function handleSendMany(req: MasterApiSpecRouteRequest<'v1.wallet.s throw new BadRequestError(`Transaction prebuild failed local validation: ${err.message}`); } - logger.debug('Tx prebuild: %s', JSON.stringify(txPrebuilt, null, 2)); - return signAndSendMultisig( wallet, req.decoded.source, diff --git a/src/api/master/handlers/handleSignAndSendTxRequest.ts b/src/api/master/handlers/handleSignAndSendTxRequest.ts index cbfa674..9e8c180 100644 --- a/src/api/master/handlers/handleSignAndSendTxRequest.ts +++ b/src/api/master/handlers/handleSignAndSendTxRequest.ts @@ -41,16 +41,11 @@ export async function handleSignAndSendTxRequest( ); } - logger.debug(`Signing keychain: ${JSON.stringify(signingKeychain, null, 2)}`); - logger.debug(`Params: ${JSON.stringify(params, null, 2)}`); - const txRequest = await getTxRequest(bitgo, wallet.id(), req.params.txRequestId, reqId); if (!txRequest) { throw new Error(`TxRequest ${req.params.txRequestId} not found`); } - logger.debug(`TxRequest: ${JSON.stringify(txRequest, null, 2)}`); - return signAndSendTxRequests( bitgo, wallet, diff --git a/src/api/master/handlers/recoveryConsolidationsWallet.ts b/src/api/master/handlers/recoveryConsolidationsWallet.ts index a81f521..2a2a9bb 100644 --- a/src/api/master/handlers/recoveryConsolidationsWallet.ts +++ b/src/api/master/handlers/recoveryConsolidationsWallet.ts @@ -101,8 +101,6 @@ export async function handleRecoveryConsolidationsOnPrem( bitgoKey: bitgoPub, }); - console.log(`Recovery consolidations result: ${JSON.stringify(result)}`); - if (result.transactions) { txs = result.transactions; } else if (result.txRequests) { @@ -111,7 +109,7 @@ export async function handleRecoveryConsolidationsOnPrem( throw new Error('recoverConsolidations did not return expected transactions'); } - logger.debug(`Found ${txs.length} unsigned consolidation transactions`); + logger.info(`Found ${txs.length} unsigned consolidation transactions`); const signedTxs = []; try { diff --git a/src/api/master/routers/enclavedExpressHealth.ts b/src/api/master/routers/enclavedExpressHealth.ts index 31ab8ea..c1ba0f3 100644 --- a/src/api/master/routers/enclavedExpressHealth.ts +++ b/src/api/master/routers/enclavedExpressHealth.ts @@ -87,8 +87,6 @@ export function createEnclavedExpressRouter( router.get('v1.enclaved.version', [ responseHandler(async () => { - logger.debug('Getting version from enclaved express'); - try { // Use the client's getVersion method instead of direct HTTP request const versionResponse = await enclavedClient.getVersion(); diff --git a/src/enclavedApp.ts b/src/enclavedApp.ts index 17e8306..ebe764a 100644 --- a/src/enclavedApp.ts +++ b/src/enclavedApp.ts @@ -89,12 +89,11 @@ export function createBaseUri(config: EnclavedConfig): string { * Create and configure the express application */ export function app(cfg: EnclavedConfig): express.Application { - logger.debug('app is initializing'); + logger.info('App is initializing'); const app = express(); setupLogging(app, cfg); - logger.debug('logging setup'); // Add custom morgan token for mTLS client certificate morgan.token('remote-user', function (req: express.Request) { diff --git a/src/initConfig.ts b/src/initConfig.ts index cc4f5c3..ef00c84 100644 --- a/src/initConfig.ts +++ b/src/initConfig.ts @@ -154,7 +154,7 @@ function configureEnclavedMode(): EnclavedConfig { throw new Error(`Failed to read TLS key from keyPath: ${err.message}`); } } else if (config.tlsKey) { - logger.debug('Using TLS private key from environment variable'); + logger.info('Using TLS private key from environment variable'); } if (!config.tlsCert && config.crtPath) { @@ -166,7 +166,7 @@ function configureEnclavedMode(): EnclavedConfig { throw new Error(`Failed to read TLS certificate from crtPath: ${err.message}`); } } else if (config.tlsCert) { - logger.debug('Using TLS certificate from environment variable'); + logger.info('Using TLS certificate from environment variable'); } // Validate that certificates are properly loaded when TLS is enabled @@ -323,7 +323,7 @@ export function configureMasterExpressMode(): MasterExpressConfig { throw new Error(`Failed to read TLS key from keyPath: ${err.message}`); } } else if (config.tlsKey) { - logger.debug('Using TLS private key from environment variable'); + logger.info('Using TLS private key from environment variable'); } if (!config.tlsCert && config.crtPath) { @@ -335,7 +335,7 @@ export function configureMasterExpressMode(): MasterExpressConfig { throw new Error(`Failed to read TLS certificate from crtPath: ${err.message}`); } } else if (config.tlsCert) { - logger.debug('Using TLS certificate from environment variable'); + logger.info('Using TLS certificate from environment variable'); } // Validate that certificates are properly loaded when TLS is enabled diff --git a/src/masterExpressApp.ts b/src/masterExpressApp.ts index 25fd9f0..5eedb28 100644 --- a/src/masterExpressApp.ts +++ b/src/masterExpressApp.ts @@ -88,13 +88,11 @@ export function createBaseUri(config: MasterExpressConfig): string { * Create and configure the express application for master express mode */ export function app(cfg: MasterExpressConfig): express.Application { - logger.debug('master express app is initializing'); + logger.info('Master express app is initializing'); const app = express(); setupLogging(app, cfg); - logger.debug('logging setup'); - setupCommonMiddleware(app, cfg); // Add mTLS middleware before routes if in mTLS mode diff --git a/src/routes/master.ts b/src/routes/master.ts index 20b42c7..ac705bd 100644 --- a/src/routes/master.ts +++ b/src/routes/master.ts @@ -2,7 +2,6 @@ import express from 'express'; import { MasterExpressConfig } from '../shared/types'; import { createHealthCheckRouter } from '../api/master/routers/healthCheck'; import { createEnclavedExpressRouter } from '../api/master/routers/enclavedExpressHealth'; -import logger from '../logger'; import { createMasterApiRouter } from '../api/master/routers/masterApiSpec'; /** @@ -17,6 +16,4 @@ export function setupRoutes(app: express.Application, cfg: MasterExpressConfig): app.use(createEnclavedExpressRouter(cfg)); app.use(createMasterApiRouter(cfg)); - - logger.debug('Master express routes configured'); } diff --git a/src/shared/responseHandler.ts b/src/shared/responseHandler.ts index ec14998..2d3291b 100644 --- a/src/shared/responseHandler.ts +++ b/src/shared/responseHandler.ts @@ -11,6 +11,7 @@ import { ForbiddenError, ConflictError, } from './errors'; +import logger from '../logger'; // Extend Express Response to include sendEncoded interface EncodedResponse extends ExpressResponse { @@ -41,6 +42,8 @@ export function responseHandler(fn: ServiceFunction, res, next); return res.sendEncoded(result.type, result.payload); } catch (error) { + logger.error('Error in responseHandler:', error); + // If it's already a Response object (e.g. from Response.error) if (error && typeof error === 'object' && 'type' in error && 'payload' in error) { const apiError = error as ApiResponse; From 0277e68a00e9901f964dcc8498c7f5619a08d772 Mon Sep 17 00:00:00 2001 From: Pranav Jain Date: Tue, 22 Jul 2025 16:31:56 -0400 Subject: [PATCH 2/2] chore(mbe): improve response handler error logs Ticket: WP-5313 --- src/shared/responseHandler.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/shared/responseHandler.ts b/src/shared/responseHandler.ts index 2d3291b..d32ebba 100644 --- a/src/shared/responseHandler.ts +++ b/src/shared/responseHandler.ts @@ -42,8 +42,6 @@ export function responseHandler(fn: ServiceFunction, res, next); return res.sendEncoded(result.type, result.payload); } catch (error) { - logger.error('Error in responseHandler:', error); - // If it's already a Response object (e.g. from Response.error) if (error && typeof error === 'object' && 'type' in error && 'payload' in error) { const apiError = error as ApiResponse; @@ -56,6 +54,7 @@ export function responseHandler(fn: ServiceFunction(fn: ServiceFunction(fn: ServiceFunction