mirror of
https://github.com/mathew-kurian/Scribe.js
synced 2025-04-26 07:14:58 +00:00
Create a contextString and a real argsString key
This commit is contained in:
parent
7c6dcb8523
commit
c1447eb09d
1 changed files with 97 additions and 68 deletions
165
lib/console2.js
165
lib/console2.js
|
@ -341,73 +341,16 @@
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Console2.prototype.buildMessage
|
* Console2.prototype.buildArgs
|
||||||
*
|
*
|
||||||
* @param {Object} log The log object
|
* Build the args string
|
||||||
|
* ie. the string composed with the arguments send to the logger
|
||||||
*
|
*
|
||||||
* @param {Object} opt Optional options telling what to include in the message
|
* @param {Object} log
|
||||||
* @param {Boolean} opt.tags Print Tags ? Default false.
|
* @return {String} the string
|
||||||
* @param {Boolean} opt.location Print location ? Default false.
|
|
||||||
* @param {Boolean} opt.time Print time ? Default false.
|
|
||||||
* @param {Boolean} opt.date Print date ? Default false.
|
|
||||||
*
|
|
||||||
* @return {String} The message to print usualy.
|
|
||||||
*/
|
*/
|
||||||
Console2.prototype.buildMessage = function (log, opt) {
|
Console2.prototype.buildArgs = function (log) {
|
||||||
|
|
||||||
if (!opt) {
|
|
||||||
opt = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
opt.tags = opt.tags === true;
|
|
||||||
opt.location = opt.location === true;
|
|
||||||
opt.time = opt.time === true;
|
|
||||||
opt.date = opt.date === true;
|
|
||||||
|
|
||||||
var result = "", //final output
|
|
||||||
space = " ", //space between context parts
|
|
||||||
length = 0; //length of the context part (human readable string)
|
|
||||||
//ie. without escapted or colors caracters
|
|
||||||
|
|
||||||
if (opt.tags && log.context.tags) {
|
|
||||||
var tags = buildTags(log.context.tags);
|
|
||||||
result += applyColors(tags.msg, log.opt.tagsColors) + space;
|
|
||||||
length += tags.msgLength + space.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opt.location && log.context.location.filename && log.context.location.line) {
|
|
||||||
var infos = buildFileInfos(log.context.location, log.opt.fileColors, log.opt.lineColors);
|
|
||||||
result += infos.msg + space;
|
|
||||||
length += infos.msgLength + space.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opt.time && log.context.time) {
|
|
||||||
var time = buildTime(log.context.time);
|
|
||||||
result += applyColors(time.msg, log.opt.timeColors) + space;
|
|
||||||
length += time.msgLength + space.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (opt.date && log.context.time) {
|
|
||||||
var date = buildDate(log.context.time);
|
|
||||||
result += applyColors(date.msg, log.opt.dateColors) + space;
|
|
||||||
length += date.msgLength + space.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if (length > 0) { //if there is context string
|
|
||||||
//add space according to the contextMediumSize
|
|
||||||
var offset = this.opt.contextMediumSize - length;
|
|
||||||
|
|
||||||
if (offset < 0) { //context string could be longer than medium size
|
|
||||||
offset = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
result += new Array(offset + this.opt.spaceSize).join(' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
//It's time to log the args
|
|
||||||
|
|
||||||
var args = Array.prototype.slice.call(log.args, 0), //transform args in an array
|
var args = Array.prototype.slice.call(log.args, 0), //transform args in an array
|
||||||
msg = ""; //the log message
|
msg = ""; //the log message
|
||||||
|
@ -450,9 +393,72 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result += msg;
|
return msg;
|
||||||
|
|
||||||
return result;
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Console2.prototype.buildContext
|
||||||
|
*
|
||||||
|
* Build the context string
|
||||||
|
* ie. the string composed with arguments passed to Console2 context functions
|
||||||
|
*
|
||||||
|
* @param {Object} log The log object
|
||||||
|
*
|
||||||
|
* @param {Object} opt Optional options telling what to include in the message
|
||||||
|
* @param {Boolean} opt.tags Print Tags ? Default false.
|
||||||
|
* @param {Boolean} opt.location Print location ? Default false.
|
||||||
|
* @param {Boolean} opt.time Print time ? Default false.
|
||||||
|
* @param {Boolean} opt.date Print date ? Default false.
|
||||||
|
*
|
||||||
|
* @return {Object}
|
||||||
|
* @return {String} result
|
||||||
|
* @return {Int} length the "human readable" length of the result
|
||||||
|
*/
|
||||||
|
Console2.prototype.buildContext = function (log, opt) {
|
||||||
|
|
||||||
|
if (!opt) {
|
||||||
|
opt = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
opt.tags = opt.tags === true;
|
||||||
|
opt.location = opt.location === true;
|
||||||
|
opt.time = opt.time === true;
|
||||||
|
opt.date = opt.date === true;
|
||||||
|
|
||||||
|
var result = "", //final output
|
||||||
|
space = " ", //space between context parts
|
||||||
|
length = 0; //length of the context part (human readable string)
|
||||||
|
//ie. without escapted or colors caracters
|
||||||
|
|
||||||
|
if (opt.tags && log.context.tags) {
|
||||||
|
var tags = buildTags(log.context.tags);
|
||||||
|
result += applyColors(tags.msg, log.opt.tagsColors) + space;
|
||||||
|
length += tags.msgLength + space.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opt.location && log.context.location.filename && log.context.location.line) {
|
||||||
|
var infos = buildFileInfos(log.context.location, log.opt.fileColors, log.opt.lineColors);
|
||||||
|
result += infos.msg + space;
|
||||||
|
length += infos.msgLength + space.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opt.time && log.context.time) {
|
||||||
|
var time = buildTime(log.context.time);
|
||||||
|
result += applyColors(time.msg, log.opt.timeColors) + space;
|
||||||
|
length += time.msgLength + space.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opt.date && log.context.time) {
|
||||||
|
var date = buildDate(log.context.time);
|
||||||
|
result += applyColors(date.msg, log.opt.dateColors) + space;
|
||||||
|
length += date.msgLength + space.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
result : result,
|
||||||
|
length : length
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -525,18 +531,41 @@
|
||||||
location : location
|
location : location
|
||||||
},
|
},
|
||||||
args : arguments,
|
args : arguments,
|
||||||
argsString : util.format.apply(console, arguments), //stringify arguments
|
|
||||||
opt : opt
|
opt : opt
|
||||||
};
|
};
|
||||||
|
|
||||||
//Build the string message
|
//It's time to build te result string
|
||||||
log.message = this.buildMessage(log, {
|
|
||||||
|
var offsetSpace = "";
|
||||||
|
|
||||||
|
//Build the context string
|
||||||
|
var context = this.buildContext(log, {
|
||||||
tags : this._tags.length > 0 || this.opt.alwaysTags,
|
tags : this._tags.length > 0 || this.opt.alwaysTags,
|
||||||
location : this._location || this.opt.alwaysLocation,
|
location : this._location || this.opt.alwaysLocation,
|
||||||
time : this._time || this.opt.alwaysTime,
|
time : this._time || this.opt.alwaysTime,
|
||||||
date : this._date || this.opt.alwaysDate
|
date : this._date || this.opt.alwaysDate
|
||||||
});
|
});
|
||||||
|
|
||||||
|
log.contextString = context.result;
|
||||||
|
|
||||||
|
//Build the args string
|
||||||
|
log.argsString = this.buildArgs(log);
|
||||||
|
|
||||||
|
//Generate the according number of space between context and args strings
|
||||||
|
if (context.length > 0) { //if there is context string
|
||||||
|
//add space according to the contextMediumSize
|
||||||
|
var offset = this.opt.contextMediumSize - context.length;
|
||||||
|
|
||||||
|
if (offset < 0) { //context string could be longer than medium size
|
||||||
|
offset = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
offsetSpace = new Array(offset + this.opt.spaceSize).join(' ');
|
||||||
|
}
|
||||||
|
|
||||||
|
//Finally, the message
|
||||||
|
log.message = log.contextString + offsetSpace + log.argsString;
|
||||||
|
|
||||||
//Emit events
|
//Emit events
|
||||||
this.emit('new', log, log.type);
|
this.emit('new', log, log.type);
|
||||||
this.emit(log.type, log);
|
this.emit(log.type, log);
|
||||||
|
|
Loading…
Add table
Reference in a new issue