Task 1-1: Replace console.log với NestJS Logger
Phase: 1 Priority: Medium Module:
biconomyDepends on: Không có Reference: docs/bountyhunter-blockchain-p2/details/feature-evm-integration/SPEC.md
Background
BiconomyProcessor và BiconomyService hiện đang sử dụng console.log() / console.error() thay vì NestJS Logger. Điều này làm cho logs không có cấu trúc nhất quán, thiếu context (class name, timestamp chuẩn), và không thể tắt/bật theo log level. BiconomyProcessor đã khai báo private readonly logger = new Logger(BiconomyProcessor.name) nhưng chưa áp dụng triệt để. Ngoài ra, một số log dạng raw error có thể vô tình expose private key.
Tasks
Note:
Loggercủa NestJS được import từ@nestjs/common.BiconomyProcessorđã cóprivate readonly logger = new Logger(BiconomyProcessor.name)— chỉ cần thay thế cácconsole.log/console.errorcòn lại. VớiBiconomyService, thêmprivate readonly logger = new Logger(BiconomyService.name)vào constructor hoặc khai báo như class property.
- [ ] Tìm toàn bộ
console.logvàconsole.errortrongbiconomy.processor.tsvàbiconomy.service.ts - [ ] Thay thế bằng các method logger tương ứng:
// Trước: console.log('Processing job:', job.id); console.error('Error:', error); // Sau: this.logger.log(`Processing job: ${job.id}`); this.logger.error(`Error: ${error.message}`, error.stack); - [ ] Áp dụng format log có context rõ ràng:
this.logger.log( `[BICONOMY] action=SEND_GASLESS_NFT jobId=${job.id} status=success txHash=${txHash}` ); - [ ] Đảm bảo private key KHÔNG xuất hiện trong log — thay bằng hash hoặc redact:
// Không log: // this.logger.log(`privateKey=${data.privateKey}`); // Thay bằng: const keyHash = crypto.createHash('sha256').update(data.privateKey).digest('hex').slice(0, 8); this.logger.log(`[BICONOMY] keyRef=${keyHash}...`); - [ ] Trong
onActivehandler đã redact job data — kiểm tra và giữ nguyên pattern này - [ ] Thêm
private readonly logger = new Logger(BiconomyService.name)vàoBiconomyServicenếu chưa có
Verification / Acceptance Criteria
- [ ]
grep -r "console.log\|console.error" src/biconomy/trả về kết quả rỗng sau khi thay thế - [ ] Service khởi động không có lỗi TypeScript liên quan đến
Logger - [ ] Log khi job thành công có format:
[BICONOMY] action=... jobId=... status=success txHash=... - [ ] Log khi job thất bại có format:
[BICONOMY] action=... jobId=... status=error message=...— không chứa private key - [ ] Unit test không bị broken sau thay đổi
Files to Modify
src/biconomy/biconomy.processor.tssrc/biconomy/biconomy.service.ts