Как я могу переопределить console.log() и добавить слово в начале вывода?
У меня есть функция Log, которая печатает данные вместе с переданными аргументами, как я могу распечатать содержимое и в то же время всегда печатать слово "Report:" в начале журнала.
function Log(){
if (app.debug_logs){
if(console && console.log){
console.log.apply(console, "Report: " + arguments);
}
}
}
Log(" error ocurred ", " on this log... ");
Я хочу иметь:
"Отчет: ошибка в этом журнале..."
Спасибо.
Ответы
Ответ 1
Вы можете легко переопределить console.log
(function(){
if(window.console && console.log){
var old = console.log;
console.log = function(){
Array.prototype.unshift.call(arguments, 'Report: ');
old.apply(this, arguments)
}
}
})();
console.log('test')
Демо: Fiddle
Ответ 2
Я бы рекомендовал использовать: https://github.com/sunnykgupta/jsLogger
window.console=(function(origConsole){
if(!window.console)
console = {};
var isDebug=false,
logArray = {
logs: [],
errors: [],
warns: [],
infos: []
}
return {
log: function(){
logArray.logs.push(arguments)
isDebug && origConsole.log && origConsole.log.apply(origConsole,arguments);
},
warn: function(){
logArray.warns.push(arguments)
isDebug && origConsole.warn && origConsole.warn.apply(origConsole,arguments);
},
error: function(){
logArray.errors.push(arguments)
isDebug && origConsole.error && origConsole.error.apply(origConsole,arguments);
},
info: function(v){
logArray.infos.push(arguments)
isDebug && origConsole.info && origConsole.info.apply(origConsole,arguments);
},
debug: function(bool){
isDebug = bool;
},
logArray: function(){
return logArray;
}
};
}(window.console));
Особенности:
- Он безопасно переопределяет console.log.
- Обращает на себя внимание, если консоль недоступна (о да, это тоже необходимо учитывать.)
- Сохраняет все журналы (даже если они подавлены) для последующего поиска.
- Управляет основными функциями консоли, такими как
log
, warn
, error
, info
.
Открыт для изменений и будет обновляться при появлении новых предложений.
Отказ от ответственности: я являюсь автором плагина.