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.
source to share
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.
source to share
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()
source to share
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');
source to share