Skip to content

Commit 4bab14e

Browse files
authored
feat: expose logger options (#3336)
Allows customising logger
1 parent fb08a2f commit 4bab14e

File tree

4 files changed

+48
-17
lines changed

4 files changed

+48
-17
lines changed

packages/logger/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"@multiformats/multiaddr": "^13.0.1",
5252
"interface-datastore": "^9.0.1",
5353
"multiformats": "^13.4.0",
54-
"weald": "^1.0.6"
54+
"weald": "^1.1.0"
5555
},
5656
"devDependencies": {
5757
"@libp2p/peer-id": "^6.0.3",

packages/logger/src/index.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ import type { PeerId, Logger, ComponentLogger } from '@libp2p/interface'
4141
import type { Multiaddr } from '@multiformats/multiaddr'
4242
import type { Key } from 'interface-datastore'
4343
import type { CID } from 'multiformats/cid'
44+
import type { Options as LoggerOptions } from 'weald'
45+
46+
export type { LoggerOptions }
4447

4548
// Add a formatter for converting to a base58 string
4649
debug.formatters.b = (v?: Uint8Array): string => {
@@ -123,9 +126,9 @@ function createDisabledLogger (namespace: string): debug.Debugger {
123126
return logger
124127
}
125128

126-
export interface PeerLoggerOptions {
127-
prefixLength: number
128-
suffixLength: number
129+
export interface PeerLoggerOptions extends LoggerOptions {
130+
prefixLength?: number
131+
suffixLength?: number
129132
}
130133

131134
/**
@@ -146,8 +149,8 @@ export interface PeerLoggerOptions {
146149
* // logs "12…oBar:my-component hello world"
147150
* ```
148151
*/
149-
export function peerLogger (peerId: PeerId, options: Partial<PeerLoggerOptions> = {}): ComponentLogger {
150-
return prefixLogger(truncatePeerId(peerId, options))
152+
export function peerLogger (peerId: PeerId, options: PeerLoggerOptions = {}): ComponentLogger {
153+
return prefixLogger(truncatePeerId(peerId, options), options)
151154
}
152155

153156
/**
@@ -166,10 +169,10 @@ export function peerLogger (peerId: PeerId, options: Partial<PeerLoggerOptions>
166169
* // logs "my-node:my-component hello world"
167170
* ```
168171
*/
169-
export function prefixLogger (prefix: string): ComponentLogger {
172+
export function prefixLogger (prefix: string, options?: LoggerOptions): ComponentLogger {
170173
return {
171174
forComponent (name: string) {
172-
return logger(`${prefix}:${name}`)
175+
return logger(`${prefix}:${name}`, options)
173176
}
174177
}
175178
}
@@ -190,10 +193,10 @@ export function prefixLogger (prefix: string): ComponentLogger {
190193
* // logs "my-component hello world"
191194
* ```
192195
*/
193-
export function defaultLogger (): ComponentLogger {
196+
export function defaultLogger (options?: LoggerOptions): ComponentLogger {
194197
return {
195198
forComponent (name: string) {
196-
return logger(name)
199+
return logger(name, options)
197200
}
198201
}
199202
}
@@ -211,19 +214,19 @@ export function defaultLogger (): ComponentLogger {
211214
* // logs "my-component hello world"
212215
* ```
213216
*/
214-
export function logger (name: string): Logger {
217+
export function logger (name: string, options?: LoggerOptions): Logger {
215218
// trace logging is a no-op by default
216219
let trace: debug.Debugger = createDisabledLogger(`${name}:trace`)
217220

218221
// look at all the debug names and see if trace logging has explicitly been enabled
219222
if (debug.enabled(`${name}:trace`) && debug.names.map((r: any) => r.toString()).find((n: string) => n.includes(':trace')) != null) {
220-
trace = debug(`${name}:trace`)
223+
trace = debug(`${name}:trace`, options)
221224
}
222225

223-
return Object.assign(debug(name), {
224-
error: debug(`${name}:error`),
226+
return Object.assign(debug(name, options), {
227+
error: debug(`${name}:error`, options),
225228
trace,
226-
newScope: (scope: string) => logger(`${name}:${scope}`)
229+
newScope: (scope: string) => logger(`${name}:${scope}`, options)
227230
})
228231
}
229232

packages/logger/src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { PeerLoggerOptions } from './index.js'
22
import type { PeerId } from '@libp2p/interface'
33

4-
export function truncatePeerId (peerId: PeerId, options: Partial<PeerLoggerOptions> = {}): string {
4+
export function truncatePeerId (peerId: PeerId, options: PeerLoggerOptions = {}): string {
55
const prefixLength = options.prefixLength ?? 2
66
const suffixLength = options.suffixLength ?? 4
77

packages/logger/test/index.spec.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,14 @@ import sinon from 'sinon'
1111
import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string'
1212
import { toString as uint8ArrayToString } from 'uint8arrays/to-string'
1313
import debug from 'weald'
14-
import { logger, peerLogger } from '../src/index.js'
14+
import { format } from 'weald/format'
15+
import { disable, enable, logger, peerLogger } from '../src/index.js'
1516

1617
describe('logger', () => {
18+
afterEach(() => {
19+
disable()
20+
})
21+
1722
it('creates a logger', () => {
1823
const log = logger('hello')
1924

@@ -163,4 +168,27 @@ describe('logger', () => {
163168

164169
expect(debug.formatters.k(key)).to.equal(key.toString())
165170
})
171+
172+
it('collects logs', () => {
173+
enable('*,*:trace')
174+
debug.useColors = () => false
175+
176+
const logs: any[] = []
177+
const log = logger('hello', {
178+
onLog (...args) {
179+
logs.push(format(...args))
180+
}
181+
})
182+
183+
log('hello world')
184+
log.error('oh no')
185+
log.trace('shh')
186+
187+
const scope = log.newScope('new-scope')
188+
scope('hello world')
189+
scope.error('oh no')
190+
scope.trace('shh')
191+
192+
expect(logs).to.have.lengthOf(6)
193+
})
166194
})

0 commit comments

Comments
 (0)