Захват консоли javascript.лог? [дубликат]




Возможные Дубликаты:
перехват вызовов на консоль.войдите в Chrome
могу ли я расширить объект консоли (для перенаправления журнала) в javascript?






когда мое приложение JS пишет на консоль.журнал, я хочу захватить это сообщение журнала, чтобы я мог AJAX выводить этот журнал на сервер. Как мне это сделать?



код, который записывает в журнал из внешних служб, поэтому я не могу просто ajax его напрямую.

286   2  

2 ответов:

вы можете захватить функции JavaScript следующим образом:

(function(){
    var oldLog = console.log;
    console.log = function (message) {
        // DO MESSAGE HERE.
        oldLog.apply(console, arguments);
    };
})();
  1. строка 1 обертывает вашу функцию в закрытии, поэтому никакие другие функции не имеют прямого доступа к oldLog (по причинам ремонтопригодности).
  2. строка 2 захватывает исходный метод.
  3. строка 3 создает новую функцию.
  4. строка 4 это куда вы посылаете message в свой сервер.
  5. строка 5 is вызывает исходный метод, как это было бы обработано первоначально.

apply используется, чтобы мы могли вызвать его onconsole используя исходные аргументы. Просто звоню oldLog(message) не так log зависит от его связи с console.


обновление за комментарий zzzzBov ниже, в IE9 console.log на самом деле это не функция так oldLog.apply не получилось бы. Видеть

просто:

function yourCustomLog(msg) {
  //send msg via AJAX
}

window.console.log = yourCustomLog;

вы можете переопределить весь console объект для захвата console.info,console.warn и такой:

window.console = {
  log = function(msg) {...},
  info = function(msg) {...},
  warn = function(msg) {...},
  //...
}

Comments

    Ничего не найдено.