Экспорт журнала Javascript Console из Google Chrome
Есть ли способ экспортировать сообщения, записанные на консоль javascript в Google Chrome?
Если нет, может ли кто-нибудь предложить хороший способ диагностики проблем javascript на клиентской машине? Я не смог реплицировать проблемы локально, несмотря на создание одинаковой среды.
Ответы
Ответ 1
Шаг 1. Добавьте несколько команд console.log, которые помогут диагностировать вашу проблему.
Шаг 2: добавьте логику для переопределения console.log в вашей клиентской системе, чтобы она фактически сохраняла свои аргументы в window.log(или что-то еще) вместо фактического входа в консоль.
window.log = []
console = console || {"log":function(x) {window.log.push(x);}}
Шаг 3: добавьте обработчик onUnload, который запускает запрос AJAX на ваш сервер с содержимым window.log как одним из его параметров
Шаг 4: Прибыль!; -)
Дополнительный бонус к этой системе заключается в том, что (как только вы ее настроите) вы можете использовать console.log без разбора, и независимо от того, находитесь ли вы в своей среде разработки или в вашей живой среде, она сделает правильную вещь.
Ответ 2
Здесь немного более короткая/более простая версия моего предыдущего ответа. Чтобы все было в порядке, мы просто сделаем вызов AJAX для каждого журнала, и чтобы все было еще проще, мы будем использовать jQuery для "тяжелого подъема". (Если вы используете JS-библиотеку, отличную от jQuery, у нее должен быть какой-то подобный метод, а если нет, или если вы не используете JS-библиотеку... время, чтобы серьезно рассмотреть jQuery!) О, и мы будем бросать в некотором псевдокоде на стороне сервера, чтобы продемонстрировать, насколько легко эта часть уравнения.
Шаг 1. Добавьте несколько команд console.log, которые помогут диагностировать вашу проблему.
Шаг 2: добавьте логику для переопределения console.log в вашей клиентской системе, чтобы он отправил журнал на ваш сервер, если консоль не существует
var SERVER_URL = "www.yourServer.com/ajaxLogger.jsp";
var ajaxConsole = {"log":function(x) {
$.get(SERVER_URL, {"log":x});
}}
console = console || ajaxConsole; // If there is no console, use the AJAX one
Шаг 3. Создание страницы ведения журнала на вашем сервере
В следующем примере используется псевдокод, так как у каждого есть другой серверный язык:
String log = pageParameters["log"];
Database.execute("INSERT INTO yourLogTable (log, date) VALUES ('" +
dbEscape(log) +"', current date)");
Ответ 3
Вы можете использовать мою библиотеку журналов JavaScript, log4javascript. Вам нужно будет:
- Настройте log4javascript для отправки сообщений журнала на сервер с помощью AjaxAppender (см. краткое руководство по началу работы, внизу)
- Добавить записи вызовов на ваш JavaScript
- Соберите сообщения о регистрации на сервере с использованием выбранной вами технологии
Ответ 4
Существует инструмент с открытым исходным кодом, который позволяет сохранять все console.log
выходные данные в файле на вашем сервере - JS LogFlush (plug!).
JS LogFlush - это интегрированное решение для ведения журнала JavaScript, которое включает в себя:
- кросс-браузерная замена консоли console.log на стороне клиента.
- система хранения журналов - на стороне сервера.
Демо