Подтвердить что ты не робот

Как я могу переопределить 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... ");

Я хочу иметь: "Отчет: ошибка в этом журнале..."

Спасибо.

4b9b3361

Ответ 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.

Открыт для изменений и будет обновляться при появлении новых предложений. Отказ от ответственности: я являюсь автором плагина.