Захват консоли javascript.лог? [дубликат]
Возможные Дубликаты:
перехват вызовов на консоль.войдите в Chrome
могу ли я расширить объект консоли (для перенаправления журнала) в javascript?
когда мое приложение JS пишет на консоль.журнал, я хочу захватить это сообщение журнала, чтобы я мог AJAX выводить этот журнал на сервер. Как мне это сделать?
код, который записывает в журнал из внешних служб, поэтому я не могу просто ajax его напрямую.
2 ответов:
вы можете захватить функции JavaScript следующим образом:
(function(){ var oldLog = console.log; console.log = function (message) { // DO MESSAGE HERE. oldLog.apply(console, arguments); }; })();
- строка 1 обертывает вашу функцию в закрытии, поэтому никакие другие функции не имеют прямого доступа к
oldLog(по причинам ремонтопригодности).- строка 2 захватывает исходный метод.
- строка 3 создает новую функцию.
- строка 4 это куда вы посылаете
messageв свой сервер.- строка 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