Browsers: Console Groups

I have this code:

console.log('before');

console.groupCollapsed('main');
console.log('test1')
console.groupEnd();

console.groupCollapsed('main');
console.log('test2')
console.groupEnd();

console.groupCollapsed('main');
console.log('test2')
console.groupEnd();

console.log('after');

      

It adds 3 lines to browser logs.
The problem is that the logs are divided into three groups. Is it possible to add logs to the previous group if the previous log message and the current ones have the same group name ( main

)?

So now the conclusion:

before
> main
    test1
> main
    test2
> main
    test3
after

      

and I want this output:

before
> main
    test1
    test2
    test3
after

      

Update : the isync code. So I have to close the groups after logging to prevent writing from groups outside of groups.

+3


source to share


3 answers


You don't need to open a new group unless you really want to create a new group. Therefore, as soon as you open a group, no matter what you register, it will be attached to that group until you close it.

So in your example it would be



console.log('before');

console.groupCollapsed('main');
console.log('test1');
console.log('test2');
console.log('test2');
console.groupEnd();

console.log('after');

      

This shouldn't bother you, but the browser takes a little time to register with the groups. One more note.

+1


source


How about a custom logger class

function Logger(){
    var logs = [];
    var gname = "default";
    function group(name){
        gname = name
    }
    function log(){
        !!logs[gname] || (logs[gname] = []);
        logs[gname].push(Array.prototype.slice.call(arguments, 0));
    }
    function flush(){
      console.log(logs) // loop for groups or just output array
      logs=[]; // clear values
    }
    return {group:group,flush:flush,log:log}
}

      



Using

var l = new Logger()
l.group('main1');
l.log('foo','bar','foobar')
l.log('foo-bar')

l.group('main2');
l.log('foo')
l.log('bar')

l.group('main1');
l.log('foo2bar')
l.log('bar2foo')

l.group('main3');
l.log('foo')
l.log('bar')

l.group('main1');
l.log('foo3')
l.log('bar3')

l.flush()

      

+3


source


You can do this without closing the group. You can use something like this:

var curGroup;
console.logInGroup = function(group, log) {
    if (curGroup != group) {
        console.groupEnd();
        console.groupCollapsed(curGroup = group);
    }
    console.log.apply(console, [].slice.call(arguments, 1));
};

console.log('before');
console.logInGroup('main', 'test1');
console.logInGroup('main', 'test2');
console.logInGroup('main', 'test2');
console.groupEnd();
console.log('after');

      

+1


source







All Articles