Skip to content

Commit 01a8336

Browse files
committed
feat: added trace keyword to formatter
This adds a stack trace formatted the same way as an error message. This will allow us to debug where logging messages are coming from. Related #4
1 parent a036a78 commit 01a8336

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/formatting.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const key = Symbol('key');
77
const keys = Symbol('keys');
88
const date = Symbol('date');
99
const msg = Symbol('msg');
10+
const trace = Symbol('trace');
1011

1112
function format(
1213
strings: TemplateStringsArray,
@@ -32,6 +33,10 @@ function format(
3233
result += record.msg;
3334
} else if (value === level) {
3435
result += levelToString(record.level);
36+
} else if (value === trace) {
37+
const errorStack = new Error().stack ?? '';
38+
const formattedStack = errorStack.split('\n').splice(7).join('\n');
39+
result += '\n' + formattedStack;
3540
} else {
3641
result += value.toString();
3742
}
@@ -43,4 +48,4 @@ function format(
4348

4449
const formatter = format`${level}:${key}:${msg}`;
4550

46-
export { level, key, keys, date, msg, format, formatter };
51+
export { level, key, keys, date, msg, trace, format, formatter };

tests/index.test.ts

+16
Original file line numberDiff line numberDiff line change
@@ -98,4 +98,20 @@ describe('index', () => {
9898
childLogger.debug('DEBUG MESSAGE');
9999
expect(consoleSpy).toHaveBeenCalledWith('DEBUG:root.child:DEBUG MESSAGE');
100100
});
101+
test('Testing logger trace', () => {
102+
jest
103+
.useFakeTimers('modern')
104+
.setSystemTime(new Date('2020-01-01').getTime());
105+
const consoleSpy = jest.spyOn(console, 'log');
106+
const logger = new Logger('root', LogLevel.NOTSET, [
107+
new ConsoleHandler(
108+
formatting.format`${formatting.date}:${formatting.msg}${formatting.trace}`,
109+
),
110+
]);
111+
logger.debug('DEBUG MESSAGE');
112+
expect(consoleSpy).toHaveBeenCalledWith(
113+
expect.stringContaining('2020-01-01T00:00:00.000Z:DEBUG MESSAGE'),
114+
);
115+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('at'));
116+
});
101117
});

0 commit comments

Comments
 (0)