Экспорт журнала 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 на стороне клиента.
  • система хранения журналов - на стороне сервера.

Демо