From cb046aa567c4c0dd1fc78de9de58b305486558eb Mon Sep 17 00:00:00 2001 From: Dadam Rishikesh Reddy Date: Thu, 5 Feb 2026 18:01:33 +0530 Subject: [PATCH] feat(root): add @bitgo/logger with sensitive data sanitization Created @bitgo/logger package that automatically sanitizes sensitive data (tokens, private keys, passwords) in test/staging environments. Changes: - Added logger to 5 modules: express, sdk-coin-apt, sdk-coin-sol, sdk-coin-vet, blockapis - Replaced 17 console.error/log statements with logger calls - Sanitizes keys: token, bearer, prv, xprv, privateKey, password, otp - Works recursively on nested objects/arrays TICKET: WP-7503 --- Dockerfile | 3 + modules/blockapis/package.json | 1 + modules/blockapis/src/BaseHttpClient.ts | 3 +- modules/express/package.json | 1 + modules/express/src/clientRoutes.ts | 13 ++-- modules/express/src/fetchEncryptedPrivKeys.ts | 3 +- modules/logger/.eslintignore | 2 + modules/logger/.gitignore | 4 + modules/logger/.npmignore | 9 +++ modules/logger/.prettierignore | 2 + modules/logger/.prettierrc.yml | 3 + modules/logger/CHANGELOG.md | 5 ++ modules/logger/package.json | 35 +++++++++ modules/logger/src/index.ts | 1 + modules/logger/src/logger.ts | 71 +++++++++++++++++ modules/logger/src/sanitizeLog.ts | 78 +++++++++++++++++++ modules/logger/tsconfig.json | 12 +++ modules/sdk-coin-apt/package.json | 1 + .../src/lib/transaction/transaction.ts | 3 +- .../digitalAssetTransferBuilder.ts | 3 +- .../fungibleAssetTransferBuilder.ts | 3 +- .../transactionBuilder/transactionBuilder.ts | 3 +- .../lib/transactionBuilder/transferBuilder.ts | 3 +- modules/sdk-coin-sol/package.json | 1 + modules/sdk-coin-sol/src/sol.ts | 7 +- modules/sdk-coin-vet/package.json | 1 + modules/sdk-coin-vet/src/vet.ts | 3 +- 27 files changed, 257 insertions(+), 17 deletions(-) create mode 100644 modules/logger/.eslintignore create mode 100644 modules/logger/.gitignore create mode 100644 modules/logger/.npmignore create mode 100644 modules/logger/.prettierignore create mode 100644 modules/logger/.prettierrc.yml create mode 100644 modules/logger/CHANGELOG.md create mode 100644 modules/logger/package.json create mode 100644 modules/logger/src/index.ts create mode 100644 modules/logger/src/logger.ts create mode 100644 modules/logger/src/sanitizeLog.ts create mode 100644 modules/logger/tsconfig.json diff --git a/Dockerfile b/Dockerfile index 99acdf7169..92c3aca940 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,6 +48,7 @@ COPY --from=builder /tmp/bitgo/modules/statics /var/modules/statics/ COPY --from=builder /tmp/bitgo/modules/utxo-lib /var/modules/utxo-lib/ COPY --from=builder /tmp/bitgo/modules/blake2b /var/modules/blake2b/ COPY --from=builder /tmp/bitgo/modules/blake2b-wasm /var/modules/blake2b-wasm/ +COPY --from=builder /tmp/bitgo/modules/logger /var/modules/logger/ COPY --from=builder /tmp/bitgo/modules/bitgo /var/modules/bitgo/ COPY --from=builder /tmp/bitgo/modules/abstract-utxo /var/modules/abstract-utxo/ COPY --from=builder /tmp/bitgo/modules/blockapis /var/modules/blockapis/ @@ -147,6 +148,7 @@ cd /var/modules/statics && yarn link && \ cd /var/modules/utxo-lib && yarn link && \ cd /var/modules/blake2b && yarn link && \ cd /var/modules/blake2b-wasm && yarn link && \ +cd /var/modules/logger && yarn link && \ cd /var/modules/bitgo && yarn link && \ cd /var/modules/abstract-utxo && yarn link && \ cd /var/modules/blockapis && yarn link && \ @@ -249,6 +251,7 @@ RUN cd /var/bitgo-express && \ yarn link @bitgo/utxo-lib && \ yarn link @bitgo/blake2b && \ yarn link @bitgo/blake2b-wasm && \ + yarn link @bitgo/logger && \ yarn link bitgo && \ yarn link @bitgo/abstract-utxo && \ yarn link @bitgo/blockapis && \ diff --git a/modules/blockapis/package.json b/modules/blockapis/package.json index d4f09a4f67..262a73ad8c 100644 --- a/modules/blockapis/package.json +++ b/modules/blockapis/package.json @@ -22,6 +22,7 @@ "directory": "modules/blockapis" }, "dependencies": { + "@bitgo/logger": "^1.0.0", "@bitgo/utxo-lib": "^11.20.0", "@types/superagent": "4.1.16", "superagent": "^9.0.1" diff --git a/modules/blockapis/src/BaseHttpClient.ts b/modules/blockapis/src/BaseHttpClient.ts index 831519b27d..c68f743c03 100644 --- a/modules/blockapis/src/BaseHttpClient.ts +++ b/modules/blockapis/src/BaseHttpClient.ts @@ -1,4 +1,5 @@ import * as superagent from 'superagent'; +import { logger } from '@bitgo/logger'; export class ApiRequestError extends Error { constructor(public url: string, public reason: Error | string) { @@ -64,7 +65,7 @@ export class BaseHttpClient implements HttpClient { try { response = await superagent(method, url).send(requestBody as Record); } catch (e) { - console.error(e); + logger.error(e); throw new ApiRequestError(url, e as Error); } if (!response.ok) { diff --git a/modules/express/package.json b/modules/express/package.json index a1c8c1fe7a..ff115c1f0c 100644 --- a/modules/express/package.json +++ b/modules/express/package.json @@ -40,6 +40,7 @@ "@api-ts/io-ts-http": "^3.2.1", "@api-ts/typed-express-router": "2.0.0", "@bitgo/abstract-lightning": "^7.7.0", + "@bitgo/logger": "^1.0.0", "@bitgo/sdk-core": "^36.30.0", "@bitgo/utxo-lib": "^11.20.0", "@types/proxyquire": "^1.3.31", diff --git a/modules/express/src/clientRoutes.ts b/modules/express/src/clientRoutes.ts index ea0b26e20d..9904d6da9f 100755 --- a/modules/express/src/clientRoutes.ts +++ b/modules/express/src/clientRoutes.ts @@ -1,6 +1,7 @@ /** * @prettier */ +import { logger } from '@bitgo/logger'; import { CommitmentShareRecord, CreateNetworkConnectionParams, @@ -491,7 +492,7 @@ export async function handleV2GenerateShareTSS( throw new Error(`MPC Algorithm ${coin.getMPCAlgorithm()} is not supported.`); } } catch (error) { - console.error('error while signing wallet transaction ', error); + logger.error('error while signing wallet transaction', error); throw error; } } @@ -504,7 +505,7 @@ export async function handleV2SignTSSWalletTx(req: ExpressApiRouteRequest<'expre try { return await wallet.ensureCleanSigSharesAndSignTransaction(createTSSSendParams(req, wallet)); } catch (error) { - console.error('error while signing wallet transaction ', error); + logger.error('error while signing wallet transaction', error); throw error; } } @@ -536,7 +537,7 @@ export async function handleV2Sign(req: ExpressApiRouteRequest<'express.v2.coin. try { return await coin.signTransaction({ ...req.body, prv: privKey }); } catch (error) { - console.log('error while signing wallet transaction ', error); + logger.error('error while signing wallet transaction', error); throw error; } } @@ -586,7 +587,7 @@ export async function handleV2OFCSignPayloadInExtSigningMode( signature, }; } catch (error) { - console.log('Error while signing message.', error); + logger.error('Error while signing message', error); throw error; } } @@ -730,7 +731,7 @@ async function handleV2SignTxWallet(req: ExpressApiRouteRequest<'express.v2.wall try { return await wallet.signTransaction(createSendParams(req)); } catch (error) { - console.log('error while signing wallet transaction ', error); + logger.error('error while signing wallet transaction', error); throw error; } } @@ -745,7 +746,7 @@ async function handleV2SignTx(req: ExpressApiRouteRequest<'express.v2.coin.signt try { return await coin.signTransaction(req.decoded); } catch (error) { - console.log('error while signing the transaction ', error); + logger.error('error while signing the transaction', error); throw error; } } diff --git a/modules/express/src/fetchEncryptedPrivKeys.ts b/modules/express/src/fetchEncryptedPrivKeys.ts index ede7e4e3f9..2c2e08f4fc 100644 --- a/modules/express/src/fetchEncryptedPrivKeys.ts +++ b/modules/express/src/fetchEncryptedPrivKeys.ts @@ -8,6 +8,7 @@ * Copyright 2022, BitGo, Inc. All Rights Reserved. */ import { writeFile } from 'fs'; +import { logger } from '@bitgo/logger'; import { BitGo, EnvironmentName } from 'bitgo'; import 'dotenv/config'; @@ -112,4 +113,4 @@ export async function fetchKeys(ids: WalletIds, token: string, accessToken?: str return Promise.resolve(output); } -fetchKeys(walletIds, accessToken).catch((e) => console.error(e)); +fetchKeys(walletIds, accessToken).catch((e) => logger.error(e)); diff --git a/modules/logger/.eslintignore b/modules/logger/.eslintignore new file mode 100644 index 0000000000..de4d1f007d --- /dev/null +++ b/modules/logger/.eslintignore @@ -0,0 +1,2 @@ +dist +node_modules diff --git a/modules/logger/.gitignore b/modules/logger/.gitignore new file mode 100644 index 0000000000..d305b1f1f1 --- /dev/null +++ b/modules/logger/.gitignore @@ -0,0 +1,4 @@ +dist +node_modules +.nyc_output +*.log diff --git a/modules/logger/.npmignore b/modules/logger/.npmignore new file mode 100644 index 0000000000..74cec81bca --- /dev/null +++ b/modules/logger/.npmignore @@ -0,0 +1,9 @@ +src +test +.eslintignore +.gitignore +.prettierignore +.prettierrc.yml +.mocharc.js +tsconfig.json +.nyc_output diff --git a/modules/logger/.prettierignore b/modules/logger/.prettierignore new file mode 100644 index 0000000000..de4d1f007d --- /dev/null +++ b/modules/logger/.prettierignore @@ -0,0 +1,2 @@ +dist +node_modules diff --git a/modules/logger/.prettierrc.yml b/modules/logger/.prettierrc.yml new file mode 100644 index 0000000000..0717384d9c --- /dev/null +++ b/modules/logger/.prettierrc.yml @@ -0,0 +1,3 @@ +printWidth: 120 +trailingComma: es5 +singleQuote: true diff --git a/modules/logger/CHANGELOG.md b/modules/logger/CHANGELOG.md new file mode 100644 index 0000000000..6187111f2e --- /dev/null +++ b/modules/logger/CHANGELOG.md @@ -0,0 +1,5 @@ +# @bitgo/logger + +## 1.0.0 + +- Initial release with sensitive data sanitization diff --git a/modules/logger/package.json b/modules/logger/package.json new file mode 100644 index 0000000000..2d054b32b8 --- /dev/null +++ b/modules/logger/package.json @@ -0,0 +1,35 @@ +{ + "name": "@bitgo/logger", + "version": "1.0.0", + "description": "BitGo logger with sensitive data sanitization", + "main": "./dist/src/index.js", + "types": "./dist/src/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "yarn tsc --build --incremental --verbose .", + "fmt": "prettier --write .", + "check-fmt": "prettier --check '**/*.{ts,js,json}'", + "clean": "rm -r ./dist", + "lint": "eslint --quiet .", + "prepare": "npm run build" + }, + "author": "BitGo SDK Team ", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/BitGo/BitGoJS.git", + "directory": "modules/logger" + }, + "lint-staged": { + "*.{js,ts}": [ + "yarn prettier --write", + "yarn eslint --fix" + ] + }, + "publishConfig": { + "access": "public" + }, + "dependencies": {} +} diff --git a/modules/logger/src/index.ts b/modules/logger/src/index.ts new file mode 100644 index 0000000000..16b4cac812 --- /dev/null +++ b/modules/logger/src/index.ts @@ -0,0 +1 @@ +export { logger } from './logger'; diff --git a/modules/logger/src/logger.ts b/modules/logger/src/logger.ts new file mode 100644 index 0000000000..295b460650 --- /dev/null +++ b/modules/logger/src/logger.ts @@ -0,0 +1,71 @@ +import { sanitize } from './sanitizeLog'; + +/** + * BitGo Logger with automatic sanitization in test/staging environments + */ +class BitGoLogger { + /** + * Determines if sanitization should be applied based on NODE_ENV + */ + private shouldSanitize(): boolean { + const env = process.env.NODE_ENV; + return env === 'test' || env === 'staging'; + } + + /** + * Sanitizes arguments if in test/staging environment + */ + private sanitizeArgs(args: unknown[]): unknown[] { + if (!this.shouldSanitize()) { + return args; + } + + return args.map((arg) => { + if (typeof arg === 'object' && arg !== null) { + return sanitize(arg); + } + return arg; + }); + } + + /** + * Logs a message with automatic sanitization + */ + log(...args: unknown[]): void { + const sanitized = this.sanitizeArgs(args); + // eslint-disable-next-line no-console + console.log(...sanitized); + } + + /** + * Logs an error message with automatic sanitization + */ + error(...args: unknown[]): void { + const sanitized = this.sanitizeArgs(args); + // eslint-disable-next-line no-console + console.error(...sanitized); + } + + /** + * Logs a warning message with automatic sanitization + */ + warn(...args: unknown[]): void { + const sanitized = this.sanitizeArgs(args); + // eslint-disable-next-line no-console + console.warn(...sanitized); + } + + /** + * Logs an info message with automatic sanitization + */ + info(...args: unknown[]): void { + const sanitized = this.sanitizeArgs(args); + // eslint-disable-next-line no-console + console.info(...sanitized); + } +} + +/** + * Singleton logger instance + */ +export const logger = new BitGoLogger(); diff --git a/modules/logger/src/sanitizeLog.ts b/modules/logger/src/sanitizeLog.ts new file mode 100644 index 0000000000..fbbf38996f --- /dev/null +++ b/modules/logger/src/sanitizeLog.ts @@ -0,0 +1,78 @@ +/** + * Sanitizes sensitive data from logs to prevent token exposure in test/staging environments + */ + +const SENSITIVE_KEYS = new Set([ + 'token', + 'bearer', + 'prv', + 'xprv', + 'privatekey', + 'password', + 'otp', + 'passphrase', + 'walletPassphrase', +]); + +const BEARER_V2_PATTERN = /^v2x[a-f0-9]{32,}$/i; + +/** + * Checks if a key is sensitive (case-insensitive) + */ +function isSensitiveKey(key: string): boolean { + return SENSITIVE_KEYS.has(key.toLowerCase()); +} + +/** + * Checks if a value matches the bearer v2 token pattern + */ +function isBearerV2Token(value: unknown): boolean { + return typeof value === 'string' && BEARER_V2_PATTERN.test(value); +} + +/** + * Recursively sanitizes an object, replacing sensitive values with '' + * Handles circular references and nested structures + */ +export function sanitize(obj: unknown, seen = new WeakSet>(), depth = 0): unknown { + // Prevent infinite recursion + if (depth > 50) { + return '[Max Depth Exceeded]'; + } + + // Handle primitives + if (obj === null || obj === undefined) { + return obj; + } + + if (typeof obj !== 'object') { + return obj; + } + + // Handle circular references + if (seen.has(obj as Record)) { + return '[Circular]'; + } + + seen.add(obj as Record); + + // Handle arrays + if (Array.isArray(obj)) { + return obj.map((item) => sanitize(item, seen, depth + 1)); + } + + // Handle objects + const sanitized: Record = {}; + + for (const [key, value] of Object.entries(obj)) { + if (isSensitiveKey(key) || isBearerV2Token(value)) { + sanitized[key] = ''; + } else if (typeof value === 'object' && value !== null) { + sanitized[key] = sanitize(value, seen, depth + 1); + } else { + sanitized[key] = value; + } + } + + return sanitized; +} diff --git a/modules/logger/tsconfig.json b/modules/logger/tsconfig.json new file mode 100644 index 0000000000..6c98fcc52c --- /dev/null +++ b/modules/logger/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + "rootDir": "./", + "strictPropertyInitialization": false, + "esModuleInterop": true, + "typeRoots": ["../../types", "./node_modules/@types", "../../node_modules/@types"] + }, + "include": ["src/**/*", "test/**/*"], + "exclude": ["node_modules"] +} diff --git a/modules/sdk-coin-apt/package.json b/modules/sdk-coin-apt/package.json index 6e772c39d8..5c312c17f6 100644 --- a/modules/sdk-coin-apt/package.json +++ b/modules/sdk-coin-apt/package.json @@ -41,6 +41,7 @@ }, "dependencies": { "@aptos-labs/ts-sdk": "1.33.1", + "@bitgo/logger": "^1.0.0", "@bitgo/sdk-core": "^36.30.0", "@bitgo/statics": "^58.24.0", "bignumber.js": "^9.1.2", diff --git a/modules/sdk-coin-apt/src/lib/transaction/transaction.ts b/modules/sdk-coin-apt/src/lib/transaction/transaction.ts index de6cf479fe..692a7e5d08 100644 --- a/modules/sdk-coin-apt/src/lib/transaction/transaction.ts +++ b/modules/sdk-coin-apt/src/lib/transaction/transaction.ts @@ -8,6 +8,7 @@ import { TransactionRecipient, TransactionType, } from '@bitgo/sdk-core'; +import { logger } from '@bitgo/logger'; import { BaseCoin as CoinConfig, NetworkType } from '@bitgo/statics'; import { AccountAddress, @@ -222,7 +223,7 @@ export abstract class Transaction extends BaseTransaction { feePayerSignature ); } catch (e) { - console.error('invalid signed transaction', e); + logger.error('invalid signed transaction', e); throw new Error('invalid signed transaction'); } } diff --git a/modules/sdk-coin-apt/src/lib/transactionBuilder/digitalAssetTransferBuilder.ts b/modules/sdk-coin-apt/src/lib/transactionBuilder/digitalAssetTransferBuilder.ts index 98284aa457..1c1bc79c99 100644 --- a/modules/sdk-coin-apt/src/lib/transactionBuilder/digitalAssetTransferBuilder.ts +++ b/modules/sdk-coin-apt/src/lib/transactionBuilder/digitalAssetTransferBuilder.ts @@ -5,6 +5,7 @@ import utils from '../utils'; import { TransactionPayload, TransactionPayloadEntryFunction } from '@aptos-labs/ts-sdk'; import { DigitalAssetTransfer } from '../transaction/digitalAssetTransfer'; import { DIGITAL_ASSET_TYPE_ARGUMENT } from '../constants'; +import { logger } from '@bitgo/logger'; export class DigitalAssetTransferBuilder extends TransactionBuilder { constructor(_coinConfig: Readonly) { @@ -47,7 +48,7 @@ export class DigitalAssetTransferBuilder extends TransactionBuilder { const recipientAddress = entryFunction.args[1].toString(); return utils.isValidAddress(recipientAddress) && utils.isValidAddress(digitalAssetAddress); } catch (e) { - console.error('invalid transaction payload', e); + logger.error('invalid transaction payload', e); return false; } } diff --git a/modules/sdk-coin-apt/src/lib/transactionBuilder/fungibleAssetTransferBuilder.ts b/modules/sdk-coin-apt/src/lib/transactionBuilder/fungibleAssetTransferBuilder.ts index bd8119e198..e1b048f707 100644 --- a/modules/sdk-coin-apt/src/lib/transactionBuilder/fungibleAssetTransferBuilder.ts +++ b/modules/sdk-coin-apt/src/lib/transactionBuilder/fungibleAssetTransferBuilder.ts @@ -5,6 +5,7 @@ import { TransactionType } from '@bitgo/sdk-core'; import utils from '../utils'; import { TransactionPayload, TransactionPayloadEntryFunction } from '@aptos-labs/ts-sdk'; import { FUNGIBLE_ASSET_TYPE_ARGUMENT } from '../constants'; +import { logger } from '@bitgo/logger'; export class FungibleAssetTransferBuilder extends TransactionBuilder { constructor(_coinConfig: Readonly) { @@ -45,7 +46,7 @@ export class FungibleAssetTransferBuilder extends TransactionBuilder { utils.isValidAddress(fungibleTokenAddress) && utils.fetchAndValidateRecipients(addressArg, amountArg).isValid ); } catch (e) { - console.error('invalid transaction payload', e); + logger.error('invalid transaction payload', e); return false; } } diff --git a/modules/sdk-coin-apt/src/lib/transactionBuilder/transactionBuilder.ts b/modules/sdk-coin-apt/src/lib/transactionBuilder/transactionBuilder.ts index 7a10143605..2c70ea1d53 100644 --- a/modules/sdk-coin-apt/src/lib/transactionBuilder/transactionBuilder.ts +++ b/modules/sdk-coin-apt/src/lib/transactionBuilder/transactionBuilder.ts @@ -8,6 +8,7 @@ import { Recipient, TransactionType, } from '@bitgo/sdk-core'; +import { logger } from '@bitgo/logger'; import { Transaction } from '../transaction/transaction'; import utils from '../utils'; import BigNumber from 'bignumber.js'; @@ -172,7 +173,7 @@ export abstract class TransactionBuilder extends BaseTransactionBuilder { const senderAddress = rawTxn.sender.toString(); return utils.isValidAddress(senderAddress) && this.isValidTransactionPayload(rawTxn.payload); } catch (e) { - console.error('invalid raw transaction', e); + logger.error('invalid raw transaction', e); return false; } } diff --git a/modules/sdk-coin-apt/src/lib/transactionBuilder/transferBuilder.ts b/modules/sdk-coin-apt/src/lib/transactionBuilder/transferBuilder.ts index e75243a872..a45bb16be9 100644 --- a/modules/sdk-coin-apt/src/lib/transactionBuilder/transferBuilder.ts +++ b/modules/sdk-coin-apt/src/lib/transactionBuilder/transferBuilder.ts @@ -4,6 +4,7 @@ import { TransactionType } from '@bitgo/sdk-core'; import { TransferTransaction } from '../transaction/transferTransaction'; import utils from '../utils'; import { TransactionPayload, TransactionPayloadEntryFunction } from '@aptos-labs/ts-sdk'; +import { logger } from '@bitgo/logger'; export class TransferBuilder extends TransactionBuilder { constructor(_coinConfig: Readonly) { @@ -40,7 +41,7 @@ export class TransferBuilder extends TransactionBuilder { const amountArg = entryFunction.args[1]; return utils.fetchAndValidateRecipients(addressArg, amountArg).isValid; } catch (e) { - console.error('invalid transaction payload', e); + logger.error('invalid transaction payload', e); return false; } } diff --git a/modules/sdk-coin-sol/package.json b/modules/sdk-coin-sol/package.json index fbd2fb9a65..ee7fecaa64 100644 --- a/modules/sdk-coin-sol/package.json +++ b/modules/sdk-coin-sol/package.json @@ -40,6 +40,7 @@ ] }, "dependencies": { + "@bitgo/logger": "^1.0.0", "@bitgo/public-types": "5.63.0", "@bitgo/sdk-core": "^36.30.0", "@bitgo/sdk-lib-mpc": "^10.9.0", diff --git a/modules/sdk-coin-sol/src/sol.ts b/modules/sdk-coin-sol/src/sol.ts index 2cd8d4379e..0e32bcb33e 100644 --- a/modules/sdk-coin-sol/src/sol.ts +++ b/modules/sdk-coin-sol/src/sol.ts @@ -7,6 +7,7 @@ import BigNumber from 'bignumber.js'; import * as base58 from 'bs58'; import * as _ from 'lodash'; import * as request from 'superagent'; +import { logger } from '@bitgo/logger'; import { AuditDecryptedKeyParams, @@ -757,7 +758,7 @@ export class Sol extends BaseCoin { } rebuiltTransaction = await transactionBuilder.build(); } catch (e) { - console.log(e); + logger.error(e); throw new Error('Invalid transaction'); } @@ -1468,7 +1469,7 @@ export class Sol extends BaseCoin { const broadcastTokenRecoveryTxn = await this.broadcastTransaction({ serializedSignedTransaction: serializedTokenRecoveryTxn, }); - console.log(broadcastTokenRecoveryTxn); + logger.log(broadcastTokenRecoveryTxn); recovertTxns.push(broadcastTokenRecoveryTxn); } @@ -1497,7 +1498,7 @@ export class Sol extends BaseCoin { const broadcastCloseATARecoveryTxn = await this.broadcastTransaction({ serializedSignedTransaction: serializedCloseATARecoveryTxn, }); - console.log(broadcastCloseATARecoveryTxn); + logger.log(broadcastCloseATARecoveryTxn); recovertTxns.push(broadcastCloseATARecoveryTxn); return recovertTxns; diff --git a/modules/sdk-coin-vet/package.json b/modules/sdk-coin-vet/package.json index dc9bfc5aa7..0a9b28ff65 100644 --- a/modules/sdk-coin-vet/package.json +++ b/modules/sdk-coin-vet/package.json @@ -42,6 +42,7 @@ "dependencies": { "@bitgo/abstract-eth": "^24.20.0", "@bitgo/blake2b": "^3.2.4", + "@bitgo/logger": "^1.0.0", "@bitgo/sdk-core": "^36.30.0", "@bitgo/sdk-lib-mpc": "^10.9.0", "@bitgo/secp256k1": "^1.10.0", diff --git a/modules/sdk-coin-vet/src/vet.ts b/modules/sdk-coin-vet/src/vet.ts index 814e7edfb6..245b12e967 100644 --- a/modules/sdk-coin-vet/src/vet.ts +++ b/modules/sdk-coin-vet/src/vet.ts @@ -3,6 +3,7 @@ import BigNumber from 'bignumber.js'; import blake2b from '@bitgo/blake2b'; import assert from 'assert'; import axios from 'axios'; +import { logger } from '@bitgo/logger'; import { TransactionClause, Transaction as VetTransaction } from '@vechain/sdk-core'; import { AuditDecryptedKeyParams, @@ -570,7 +571,7 @@ export class Vet extends BaseCoin { // The returned data is the hex-encoded balance return new BigNumber(simResponse[0].data); } catch (error) { - console.error('Error fetching token balance:', error); + logger.error('Error fetching token balance:', error); throw new Error(`Failed to get token balance: ${error.message}`); } }