Skip to content

Task 1-1: Replace console.log với NestJS Logger trong Marketplace Processor

Phase: 1 Priority: Medium Module: marketplace Depends on: Không có Reference: docs/bountyhunter-blockchain-p2/details/feature-marketplace/SPEC.md

Background

MarketplaceProcessor (1198 dòng) đã khai báo private readonly logger = new Logger(MarketplaceProcessor.name) nhưng vẫn còn rất nhiều console.log rải rác trong tất cả các @Process() handler. File lớn với 10+ handler xử lý Solana, EVM, ImmutableX — thiếu structured log gây khó debug khi có sự cố. Cần thống nhất sang NestJS Logger với format có context rõ ràng.

Tasks

Note: Logger đã được khai báo trong MarketplaceProcessor — chỉ cần thay thế console.log calls còn lại. Đảm bảo thêm context identifier [MARKETPLACE] và các field quan trọng: action, status, txHash, jobId. Với MarketplaceService, thêm private readonly logger = new Logger(MarketplaceService.name) nếu chưa có.

  • [ ] Tìm toàn bộ console.logconsole.error trong marketplace.processor.tsmarketplace.service.ts:
    grep -n "console\." src/marketplace/marketplace.processor.ts | wc -l
    
  • [ ] Thay thế tất cả console.log bằng this.logger.log(...) với format context:
    // Trước:
    console.log('handleSendAdminSellNft success', txHash);
    
    // Sau:
    this.logger.log(
      `[MARKETPLACE] action=ADMIN_SELL_NFT jobId=${job.id} status=success txHash=${txHash}`
    );
    
  • [ ] Thay thế console.error bằng this.logger.error(...) kèm stack trace:
    // Trước:
    console.error('handleSendAdminSellNft error', error);
    
    // Sau:
    this.logger.error(
      `[MARKETPLACE] action=ADMIN_SELL_NFT jobId=${job.id} status=error message=${error.message}`,
      error.stack
    );
    
  • [ ] Áp dụng cho tất cả 10+ handler: handleSendAdminSellNft, handleUserBuyNft, handleListingNft, handleCancelListingNft, handleBurnTicket, và các handler còn lại
  • [ ] Log ở đầu và cuối mỗi handler để trace thời gian xử lý:
    this.logger.log(`[MARKETPLACE] action=ADMIN_SELL_NFT jobId=${job.id} status=started`);
    // ...processing...
    this.logger.log(`[MARKETPLACE] action=ADMIN_SELL_NFT jobId=${job.id} status=completed duration=${Date.now() - startTime}ms`);
    

Verification / Acceptance Criteria

  • [ ] grep -n "console\." src/marketplace/marketplace.processor.ts trả về kết quả rỗng
  • [ ] grep -n "console\." src/marketplace/marketplace.service.ts trả về kết quả rỗng
  • [ ] Log khi job thành công có format: [MARKETPLACE] action=... jobId=... status=success txHash=...
  • [ ] Log khi job thất bại có format: [MARKETPLACE] action=... jobId=... status=error message=...
  • [ ] TypeScript compile không có lỗi

Files to Modify

  • src/marketplace/marketplace.processor.ts
  • src/marketplace/marketplace.service.ts