mirror of
https://github.com/log4js-node/log4js-node.git
synced 2025-12-08 19:26:01 +00:00
fix(#252): stacktraces in different vm context
This commit is contained in:
parent
3488bd9df8
commit
78d9e3568e
@ -30,7 +30,7 @@ const semver = require('semver');
|
||||
|
||||
function wrapErrorsWithInspect(items) {
|
||||
return items.map((item) => {
|
||||
if ((item instanceof Error) && item.stack) {
|
||||
if (util.isError(item) && item.stack) {
|
||||
return {
|
||||
inspect: function () {
|
||||
return semver.satisfies(process.version, '>=6') ? util.format(item) : `${util.format(item)}\n${item.stack}`;
|
||||
|
||||
31
test/tap/stacktraces-test.js
Normal file
31
test/tap/stacktraces-test.js
Normal file
@ -0,0 +1,31 @@
|
||||
'use strict';
|
||||
|
||||
const test = require('tap').test;
|
||||
|
||||
test('Stacktraces from errors in different VM context', (t) => {
|
||||
const log4js = require('../../lib/log4js');
|
||||
const recorder = require('../../lib/appenders/recording');
|
||||
const layout = require('../../lib/layouts').basicLayout;
|
||||
const vm = require('vm');
|
||||
|
||||
log4js.configure({
|
||||
appenders: { vcr: { type: 'recording' } },
|
||||
categories: { default: { appenders: ['vcr'], level: 'debug' } }
|
||||
});
|
||||
|
||||
const logger = log4js.getLogger();
|
||||
|
||||
try {
|
||||
// Access not defined variable.
|
||||
vm.runInNewContext('myVar();', {}, 'myfile.js');
|
||||
} catch (e) {
|
||||
// Expect to have a stack trace printed.
|
||||
logger.error(e);
|
||||
}
|
||||
|
||||
const events = recorder.replay();
|
||||
// recording appender events do not go through layouts, so let's do it
|
||||
const output = layout(events[0]);
|
||||
t.match(output, 'stacktraces-test.js');
|
||||
t.end();
|
||||
});
|
||||
Loading…
x
Reference in New Issue
Block a user