Skip to content

Commit 6dfd425

Browse files
authored
Merge pull request #80 from shiftcode/#79-nest-logger
Nest logger doesn’t log unhandled errors properly
2 parents 18fb295 + 6655a3a commit 6dfd425

File tree

5 files changed

+68
-13
lines changed

5 files changed

+68
-13
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/nest-logger/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@shiftcode/nest-logger",
3-
"version": "1.0.0",
3+
"version": "1.0.1-pr79.2",
44
"description": "NestJS support for the logger package",
55
"repository": "https://github.com/shiftcode/sc-commons-public",
66
"license": "MIT",
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import { Logger, LogLevel } from '@shiftcode/logger'
2+
import { beforeEach, describe, expect, test } from 'vitest'
3+
4+
import { MockLogTransport } from '../../test/mock-log.transport.js'
5+
import { NestLogger } from './nest-logger.js'
6+
7+
describe('NestLogger', () => {
8+
let transport: MockLogTransport
9+
let logger: Logger
10+
let nestLogger: NestLogger
11+
12+
beforeEach(() => {
13+
transport = new MockLogTransport({ logLevel: LogLevel.DEBUG, mockAttribute: 'test' })
14+
logger = new Logger('TestLogger', '#ffffff', [transport])
15+
nestLogger = new NestLogger(logger)
16+
})
17+
18+
test('error(message, trace, context) forwards args as flat array, not nested', () => {
19+
nestLogger.error('msg', 'trace', 'ctx')
20+
expect(transport.logArgs?.args).toEqual(['msg', 'trace', 'ctx'])
21+
})
22+
23+
test('warn(message, context) forwards args as flat array', () => {
24+
nestLogger.warn('msg', 'ctx')
25+
expect(transport.logArgs?.args).toEqual(['msg', 'ctx'])
26+
})
27+
28+
test('log(message, context) forwards args as flat array', () => {
29+
nestLogger.log('msg', 'ctx')
30+
expect(transport.logArgs?.args).toEqual(['msg', 'ctx'])
31+
})
32+
33+
test('debug(message, context) forwards args as flat array', () => {
34+
nestLogger.debug('msg', 'ctx')
35+
expect(transport.logArgs?.args).toEqual(['msg', 'ctx'])
36+
})
37+
38+
test('verbose(message, context) forwards args as flat array', () => {
39+
nestLogger.verbose('msg', 'ctx')
40+
expect(transport.logArgs?.args).toEqual(['msg', 'ctx'])
41+
})
42+
43+
test('error with only a message forwards a single-element args array', () => {
44+
nestLogger.error('only message')
45+
expect(transport.logArgs?.args).toEqual(['only message'])
46+
})
47+
})

packages/nest-logger/src/model/nest-logger.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,23 @@ import { Logger } from '@shiftcode/logger'
88
export class NestLogger implements LoggerService {
99
constructor(private readonly logger: Logger) {}
1010

11-
error(message: any, trace?: string) {
12-
this.logger.error([message, trace])
11+
error(message: any, ...optionalParams: any[]) {
12+
this.logger.error(message, ...optionalParams)
1313
}
1414

15-
warn(message: any) {
16-
this.logger.warn([message])
15+
warn(message: any, ...optionalParams: any[]) {
16+
this.logger.warn(message, ...optionalParams)
1717
}
1818

19-
debug(message: any) {
20-
this.logger.debug([message])
19+
debug(message: any, ...optionalParams: any[]) {
20+
this.logger.debug(message, ...optionalParams)
2121
}
2222

23-
verbose(message: any) {
24-
this.debug(message)
23+
verbose(message: any, ...optionalParams: any[]) {
24+
this.debug(message, ...optionalParams)
2525
}
2626

27-
log(message: any) {
28-
this.logger.info([message])
27+
log(message: any, ...optionalParams: any[]) {
28+
this.logger.info(message, ...optionalParams)
2929
}
3030
}

packages/nest-logger/test/mock-log.transport.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,16 @@ export interface MockLogTransportConfig {
55
mockAttribute: string
66
}
77

8+
export interface MockLogArgs {
9+
level: LogLevel
10+
clazzName: string
11+
hexColor: string
12+
timestamp: Date
13+
args: unknown[]
14+
}
15+
816
export class MockLogTransport extends LogTransport {
9-
logArgs: any
17+
logArgs: MockLogArgs | undefined
1018

1119
constructor(config: MockLogTransportConfig) {
1220
super(config.logLevel)

0 commit comments

Comments
 (0)