Как сохранить вывод 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)
Если у вас есть зарегистрированный объект:
- Щелкните правой кнопкой мыши на объекте в консоли и нажмите
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) -> щелкните объект правой кнопкой мыши -> выберите "скопировать объект" -> вставьте результаты в блокнот.
Спасибо.