Как сохранить вывод console.log(объекта) в файл?

Я пытался с помощью JSON.stringify(object), но это не распространяется на всю структуру и иерархию.

С другой стороны console.log(object) делает это, но я не могу сохранить это.

в console.log Я могу расширить один за другим все дочерние элементы, выбрать и скопировать / вставить, но структура для этого слишком большая.

10 ответов

Решение

Обновление: теперь вы можете просто щелкнуть правой кнопкой мыши

Щелкните правой кнопкой мыши> Сохранить как на панели консоли, чтобы сохранить зарегистрированные сообщения в файл.

Оригинальный ответ:

Вы можете использовать этот фрагмент devtools, показанный ниже, чтобы создать метод console.save. Он создает FileBlob из входных данных, а затем автоматически загружает его.

(function(console){

console.save = function(data, filename){

    if(!data) {
        console.error('Console.save: No data')
        return;
    }

    if(!filename) filename = 'console.json'

    if(typeof data === "object"){
        data = JSON.stringify(data, undefined, 4)
    }

    var blob = new Blob([data], {type: 'text/json'}),
        e    = document.createEvent('MouseEvents'),
        a    = document.createElement('a')

    a.download = filename
    a.href = window.URL.createObjectURL(blob)
    a.dataset.downloadurl =  ['text/json', a.download, a.href].join(':')
    e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null)
    a.dispatchEvent(e)
 }
})(console)

Источник: http://bgrins.github.io/devtools-snippets/

Если у вас есть зарегистрированный объект:

  • Щелкните правой кнопкой мыши на объекте в консоли и нажмите Store as a global variable
  • вывод будет что-то вроде temp1
  • введите в консоли copy(temp1)
  • вставить в ваш любимый текстовый редактор

Вы можете использовать "Chrome Developers Tool" API командной строки "copy()" для копирования строкового представления указанного объекта в буфер обмена.

Если у вас много объектов, то: вы можете на самом деле "JSON.stringify()" все ваши объекты и продолжать добавлять их в строку. Теперь используйте метод copy (), чтобы скопировать всю строку в буфер обмена.

Существует плагин с открытым исходным кодом javascript, который делает именно это - debugout.js

Debugout.js записывает и сохраняет console.logs, чтобы ваше приложение могло получить к ним доступ. Полное раскрытие, я написал это. Он соответствующим образом форматирует различные типы, может обрабатывать вложенные объекты и массивы, а также может дополнительно ставить отметку времени рядом с каждым журналом. Это также включает живую регистрацию в одном месте.

Это действительно поздно на вечеринку, но, возможно, это кому-то поможет. Мое решение похоже на то, что OP описал как проблемное, но, возможно, это функция, которую Chrome предлагает сейчас, но не тогда. Я попытался щелкнуть правой кнопкой мыши и сохранить файл.log после того, как объект был записан в консоль, но все, что мне дало, это текстовый файл с этим:

console.js:230 Выполнено: Array(50000)[0 … 9999][10000 … 19999][20000 … 29999][30000 … 39999][40000 … 49999] длина: 50000__proto__: Массив (0)

которая никому не нужна.

В итоге я нашел console.log(data) в коде поставил на нем точку останова, а затем набрал JSON.Stringify(data)в консоли, которая отображает весь объект в виде строки JSON, а консоль Chrome фактически дает вам кнопку для его копирования. Затем вставьте в текстовый редактор и получите свой JSON

Щелкните правой кнопкой мыши на консоли.. нажмите "Сохранить как...", это так просто... вы получите выходной текстовый файл

Существует еще один инструмент с открытым исходным кодом, который позволяет сохранить все console.log вывод в файл на вашем сервере - JS LogFlush (подключи!).

JS LogFlush - это интегрированное решение для ведения журнала JavaScript, которое включает в себя:

  • кросс-браузерная замена консоли.log без пользовательского интерфейса - на стороне клиента.
  • Система хранения журналов - на стороне сервера.

демонстрация

Щелкните правой кнопкой мыши по объекту, и мне было недоступно сохранение.

Рабочее решение для меня приведено ниже

Зарегистрируйтесь как красивая строка, показанная в этом ответе

      console.log('jsonListBeauty', JSON.stringify(jsonList, null, 2));

в Chrome DevTools журнал показывает, как показано ниже

Просто нажмите Копировать, он будет скопирован в буфер обмена с желаемым уровнем интервала.

Вставьте его в свой любимый текстовый редактор и сохраните


изображение снято 15.02.2021, Google Chrome версия 88.0.4324.150

Вы можете использовать библиотеку l2i ( https://github.com/seriyvolk83/logs2indexeddb), чтобы сохранить все, что вы положили в console.logа затем вызвать

l2i.download();

скачать файл с логами.

Более простой способ - использовать инструменты разработчика fire fox, console.log(yourObject) -> щелкните объект правой кнопкой мыши -> выберите "скопировать объект" -> вставьте результаты в блокнот.

Спасибо.

Другие вопросы по тегам