diff --git a/src/Console/Console.es6 b/src/Console/Console.es6 index 4fc7626..8edf847 100644 --- a/src/Console/Console.es6 +++ b/src/Console/Console.es6 @@ -127,7 +127,7 @@ export default class Console extends Tool $control.on('click', '.clear-console', () => logger.clear()) .on('click', '.filter', function () { - logger.filter(util.$(this).data('filter')) + logger.filter(util.$(this).data('filter')); }) .on('click', '.help', () => logger.help()); diff --git a/src/Console/Log.es6 b/src/Console/Log.es6 index 1c13459..55fc982 100644 --- a/src/Console/Log.es6 +++ b/src/Console/Log.es6 @@ -24,12 +24,8 @@ export default class Log this.time = getCurTime(); this.from = getFrom(); } - } - get formattedMsg() - { - if (!this._formattedMsg) this._formatMsg(); - return this._formattedMsg; + this._formatMsg(); } _needSrc() { @@ -79,6 +75,7 @@ export default class Log let err = args[0]; icon = 'times-circle'; err = util.isErr(err) ? err : new Error(err); + this.src = err; msg = formatErr(err); break; case 'table': @@ -100,7 +97,7 @@ export default class Log msg = render({msg, type, icon, idx, displayHeader, time, from}); delete this.args; - this._formattedMsg = msg; + this.formattedMsg = msg; } static click(type, log, $el) { diff --git a/src/Console/Logger.es6 b/src/Console/Logger.es6 index 347e374..0129b1b 100644 --- a/src/Console/Logger.es6 +++ b/src/Console/Logger.es6 @@ -41,6 +41,7 @@ export default class Logger extends util.Emitter { this._filter = val; this.emit('filter', val); + return this.render(); } log(...args) @@ -192,7 +193,7 @@ export default class Logger extends util.Emitter return logs.filter(val => { if (isFn) return filter(val); - if (isRegexp) return filter.test(util.stripHtmlTag(val.val)); + if (isRegexp) return filter.test(util.stripHtmlTag(val.formattedMsg)); return val.ignoreFilter || val.type === filter; }); diff --git a/test/console.js b/test/console.js index e7dc7ef..d06ed63 100644 --- a/test/console.js +++ b/test/console.js @@ -41,6 +41,7 @@ describe('log', function () it('error', function () { tool.clear().error(new Error('error test')); + expect($tool.find('.eruda-error')).toContainElement('.eruda-stack'); }); }); @@ -108,10 +109,10 @@ describe('filter', function () // Test case from https://github.com/liriliri/eruda/issues/14 it('function', function () { - /*tool.clear().filter(function (log) + tool.clear().filter(function (log) { return !(log.type === 'error' && /deprecated(.|\n)*stringify/.test(log.src.stack)); - });*/ + }); var obj = {}; Object.defineProperty(obj, 'a', { @@ -124,5 +125,37 @@ describe('filter', function () }); tool.log(obj); expect($tool.find('.eruda-logs li').length).toEqual(1); + + tool.filter('all'); + }); + + it('all info error warn log', function () + { + tool.clear().log('log').info('info').error('error').warn('warn'); + expect($tool.find('.eruda-log-item')).toHaveLength(4); + + tool.filter('info'); + expect($tool.find('.eruda-log-item')).toHaveLength(1); + expect($tool.find('.eruda-info')).toHaveLength(1); + + tool.filter('error'); + expect($tool.find('.eruda-log-item')).toHaveLength(1); + expect($tool.find('.eruda-error')).toHaveLength(1); + + tool.filter('warn'); + expect($tool.find('.eruda-log-item')).toHaveLength(1); + expect($tool.find('.eruda-warn')).toHaveLength(1); + + tool.filter('all'); + }); + + it('regex', function () + { + tool.clear().log('test').log('test2'); + expect($tool.find('.eruda-log-item')).toHaveLength(2); + + tool.filter(/test2/); + expect($tool.find('.eruda-log-item')).toHaveLength(1); + expect($tool.find('.eruda-log')).toContainText('test2'); }); }); \ No newline at end of file