Skip to content

Commit dbe8c6e

Browse files
authoredMar 17, 2025··
fix(logging): Use right setter for withMeta (#34839)
1 parent 65c7e29 commit dbe8c6e

File tree

2 files changed

+74
-45
lines changed

2 files changed

+74
-45
lines changed
 

‎lib/logger/index.spec.ts

+73-44
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {
2222
} from '.';
2323
import { partial } from '~test/util';
2424

25-
const initialContext = 'initial_context';
25+
const logContext = 'initial_context';
2626

2727
vi.unmock('.');
2828
vi.mock('nanoid', () => ({
@@ -39,10 +39,7 @@ describe('logger/index', () => {
3939
it('uses an auto-generated log context', () => {
4040
logger.debug('');
4141

42-
expect(bunyanDebugSpy).toHaveBeenCalledWith(
43-
{ logContext: initialContext },
44-
'',
45-
);
42+
expect(bunyanDebugSpy).toHaveBeenCalledWith({ logContext }, '');
4643
});
4744

4845
it('sets and gets context', () => {
@@ -70,95 +67,127 @@ describe('logger/index', () => {
7067

7168
describe('meta functions', () => {
7269
beforeEach(() => {
73-
setContext(initialContext);
70+
setContext(logContext);
71+
setMeta({});
7472
});
7573

7674
it('sets meta', () => {
77-
const logMeta = { foo: 'foo' };
78-
const meta = { bar: 'bar' };
79-
setMeta(meta);
75+
setMeta({ foo: 'foo' });
76+
setMeta({ bar: 'bar' });
8077

81-
logger.debug(logMeta, '');
78+
logger.debug({ baz: 'baz' }, 'message');
8279

8380
expect(bunyanDebugSpy).toHaveBeenCalledWith(
84-
{ logContext: initialContext, ...meta, ...logMeta },
85-
'',
81+
{
82+
logContext,
83+
// `foo` key was rewritten
84+
bar: 'bar',
85+
baz: 'baz',
86+
},
87+
'message',
8688
);
8789
expect(bunyanDebugSpy).toHaveBeenCalledTimes(1);
8890
});
8991

9092
it('adds meta', () => {
91-
const logMeta = { foo: 'foo' };
92-
const meta = { bar: 'bar' };
93-
addMeta(meta);
93+
setMeta({ foo: 'foo' });
94+
addMeta({ bar: 'bar' });
9495

95-
logger.debug(logMeta, '');
96+
logger.debug({ baz: 'baz' }, 'message');
9697

9798
expect(bunyanDebugSpy).toHaveBeenCalledWith(
98-
{ logContext: initialContext, ...meta, ...logMeta },
99-
'',
99+
{
100+
logContext,
101+
foo: 'foo',
102+
bar: 'bar',
103+
baz: 'baz',
104+
},
105+
'message',
100106
);
101107
expect(bunyanDebugSpy).toHaveBeenCalledTimes(1);
102108
});
103109

104110
it('removes meta', () => {
105-
const logMeta = { foo: 'foo' };
106-
const meta = { bar: 'bar' };
107-
setMeta(meta);
111+
setMeta({
112+
foo: 'foo',
113+
bar: 'bar',
114+
});
108115

109-
logger.debug(logMeta, '');
116+
logger.debug({ baz: 'baz' }, 'message');
110117

111118
expect(bunyanDebugSpy).toHaveBeenCalledWith(
112-
{ logContext: initialContext, ...meta, ...logMeta },
113-
'',
119+
{
120+
logContext,
121+
foo: 'foo',
122+
bar: 'bar',
123+
baz: 'baz',
124+
},
125+
'message',
114126
);
115127
expect(bunyanDebugSpy).toHaveBeenCalledTimes(1);
116128

117-
removeMeta(Object.keys(meta));
129+
removeMeta(['bar']);
118130

119-
logger.debug(logMeta, '');
131+
logger.debug({ baz: 'baz' }, 'message');
120132

121133
expect(bunyanDebugSpy).toHaveBeenCalledWith(
122-
{ logContext: initialContext, ...logMeta },
123-
'',
134+
{
135+
logContext,
136+
foo: 'foo',
137+
baz: 'baz',
138+
},
139+
'message',
124140
);
125141
expect(bunyanDebugSpy).toHaveBeenCalledTimes(2);
126142
});
127143

128144
it('withMeta adds and removes metadata correctly', () => {
129-
const logMeta = { foo: 'foo' };
130-
const tempMeta = { bar: 'bar' };
145+
setMeta({ foo: 'foo' });
131146

132-
withMeta(tempMeta, () => {
133-
logger.debug(logMeta, '');
147+
withMeta({ bar: 'bar' }, () => {
148+
logger.debug({ baz: 'baz' }, 'message');
134149
expect(bunyanDebugSpy).toHaveBeenCalledWith(
135-
{ logContext: initialContext, ...tempMeta, ...logMeta },
136-
'',
150+
{
151+
logContext,
152+
foo: 'foo',
153+
bar: 'bar',
154+
baz: 'baz',
155+
},
156+
'message',
137157
);
138158
});
139159

140-
logger.debug(logMeta, '');
160+
logger.debug({ baz: 'baz' }, 'message');
141161
expect(bunyanDebugSpy).toHaveBeenCalledWith(
142-
{ logContext: initialContext, ...logMeta },
143-
'',
162+
{
163+
logContext,
164+
foo: 'foo',
165+
bar: 'bar',
166+
baz: 'baz',
167+
},
168+
'message',
144169
);
145170
});
146171

147172
it('withMeta handles cleanup when callback throws', () => {
148-
const logMeta = { foo: 'foo' };
149-
const tempMeta = { bar: 'bar' };
173+
setMeta({ foo: 'foo' });
150174

151175
expect(() =>
152-
withMeta(tempMeta, () => {
153-
logger.debug(logMeta, '');
176+
withMeta({ bar: 'bar' }, () => {
177+
logger.debug({ baz: 'baz' }, 'message');
154178
throw new Error('test error');
155179
}),
156180
).toThrow('test error');
157181

158-
logger.debug(logMeta, '');
182+
logger.debug({ baz: 'baz' }, 'message');
159183
expect(bunyanDebugSpy).toHaveBeenCalledWith(
160-
{ logContext: initialContext, ...logMeta },
161-
'',
184+
{
185+
logContext,
186+
foo: 'foo',
187+
bar: 'bar',
188+
baz: 'baz',
189+
},
190+
'message',
162191
);
163192
});
164193
});

‎lib/logger/index.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export function removeMeta(fields: string[]): void {
124124
}
125125

126126
export function withMeta<T>(obj: Record<string, unknown>, cb: () => T): T {
127-
setMeta(obj);
127+
addMeta(obj);
128128
try {
129129
return cb();
130130
} finally {

0 commit comments

Comments
 (0)
Please sign in to comment.