diff --git a/packages/logger/src/index.ts b/packages/logger/src/index.ts index 9597aa813a..68b5545b17 100644 --- a/packages/logger/src/index.ts +++ b/packages/logger/src/index.ts @@ -42,6 +42,10 @@ debug.formatters.a = (v?: Multiaddr): string => { return v == null ? 'undefined' : v.toString() } +// Add a formatter for stringifying BigInts +debug.formatters.i = (v?: bigint): string => { + return v == null ? 'undefined' : v.toLocaleString() +} export interface Logger { (formatter: any, ...args: any[]): void error: (formatter: any, ...args: any[]) => void diff --git a/packages/logger/test/index.spec.ts b/packages/logger/test/index.spec.ts index 8b8b1b6731..16e2dbcf5f 100644 --- a/packages/logger/test/index.spec.ts +++ b/packages/logger/test/index.spec.ts @@ -12,6 +12,8 @@ import { toString as unint8ArrayToString } from 'uint8arrays/to-string' import { logger } from '../src/index.js' describe('logger', () => { + const debugSpy = sinon.spy(debug, 'log') + it('creates a logger', () => { const log = logger('hello') @@ -80,13 +82,22 @@ describe('logger', () => { const ma = multiaddr('/ip4/127.0.0.1/tcp/4001') - const debugSpy = sinon.spy(debug, 'log') - log('multiaddr %a', ma) expect(debugSpy.firstCall.args[0], 'Multiaddr formatting not included').to.include(`multiaddr ${ma.toString()}`) }) + it('test printf style formatting for big int', () => { + const log = logger('printf-style') + debug.enable('printf-style') + + const bi = BigInt(12345678901234567168) + + log('big int %i', bi) + + expect(debugSpy.secondCall.args[0], 'Big int formatting not included').to.include(`big int ${bi.toLocaleString()}`) + }) + it('test ma formatter', () => { const ma = multiaddr('/ip4/127.0.0.1/tcp/4001')