Skip to content

Commit

Permalink
feat: add error to logging event from logger
Browse files Browse the repository at this point in the history
  • Loading branch information
ZachHaber authored and lamweili committed Sep 29, 2022
1 parent 0f1e3c4 commit 888e6bc
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 25 deletions.
10 changes: 6 additions & 4 deletions lib/logger.js
Original file line number Diff line number Diff line change
Expand Up @@ -162,17 +162,18 @@ class Logger {

_log(level, data) {
debug(`sending log data (${level}) to appenders`);
const error = data.find((item) => item instanceof Error);
let callStack;
if (this.useCallStack) {
try {
if (data[0] instanceof Error) {
if (error) {
callStack = this.parseCallStack(
data[0],
error,
this.callStackSkipIndex + baseCallStackSkip
);
}
} catch (_err) {
// Ignore Error
// Ignore Error and use the original method of creating a new Error.
}
callStack =
callStack ||
Expand All @@ -188,7 +189,8 @@ class Logger {
level,
data,
this.context,
callStack
callStack,
error
);
clustering.send(loggingEvent);
}
Expand Down
47 changes: 26 additions & 21 deletions test/tap/logger-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -410,34 +410,39 @@ test('../../lib/logger', (batch) => {
t.end();
});

batch.test(
"should run parseCallStack against the first data value if it' an error",
(t) => {
const logger = new Logger('stack');
logger.level = 'debug';
logger.useCallStack = true;
batch.test('should utilize the first Error data value', (t) => {
const logger = new Logger('stack');
logger.level = 'debug';
logger.useCallStack = true;

const error = new Error();
const error = new Error();

logger.info(error);
const event = events.shift();
logger.info(error);
const event = events.shift();
t.equal(event.error, error);

logger.info(error);
logger.info(error);

t.match(event, events.shift());
t.match(event, events.shift());

logger.callStackLinesToSkip = 1;
logger.info(error);
const event2 = events.shift();
logger.callStackLinesToSkip = 1;
logger.info(error);
const event2 = events.shift();

t.equal(
event2.callStack,
event.callStack.split('\n').slice(1).join('\n')
);
t.equal(event2.callStack, event.callStack.split('\n').slice(1).join('\n'));
logger.callStackLinesToSkip = 0;
logger.info('hi', error);
const event3 = events.shift();
t.equal(event3.callStack, event.callStack);
t.equal(event3.error, error);

t.end();
}
);
logger.info('hi', error, new Error());
const event4 = events.shift();
t.equal(event4.callStack, event.callStack);
t.equal(event4.error, error);

t.end();
});

batch.test('creating/cloning of category', (t) => {
const defaultLogger = new Logger('default');
Expand Down

0 comments on commit 888e6bc

Please sign in to comment.