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


240

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

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

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



Вы пытаетесь сохранить console.log из браузера для разработки? Это может помочь, если вы объясните, какова ваша конечная цель.
Трэвис

1
@MichaelS Я не нашел объект в файле журнала.
Эдуард Флоринеску

@travis Я хочу экспортировать объект в JSON, но всю иерархию, а также его свойства и свойства его свойств. Я хочу практически получить «интерфейс» объекта, кроме реализации функций.
Эдуард Флоринеску

2
@MichaelS, эти вопросы о сохранении всего журнала, этот вопрос о сохранении одного объекта. Они отличаются от моей точки зрения.
Джеймс МакМэхон

Ответы:


307

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

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

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

Вы можете использовать этот фрагмент 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/#console-save


2
Я не из тех, кто бросает «Спасибо» везде, пока ответ не будет заблокирован, чтобы предотвратить «спасибо». Но спасибо. Собираюсь построить расширение.
Леон Пеллетье

14
Функция Сохранить как ... на самом деле не помогла. Он не сохраняет полный объект JSON (в моем случае у меня был массив объектов, свойства объектов не были экспортированы в выходной файл). Но, надеюсь, старый добрый фрагмент devtool, который ты вставил, сработал как шарм. Спасибо
М. Кеджи

1
если сохранить как не работает, то это регрессия. Вы должны сообщить об ошибке на crbug.com
Патрик

1
@ ishandutta2007 Вы не должны загружать какой-либо фрагмент - теперь он встроен в консоль.
Патрик

10
Правый клик не выполнит глубокое сохранение объекта.
user1032531

246

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

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

1
Я также обнаружил, что, вставив это в konklone.io/json, вы можете быстро получить это в файл CSV и оттуда в Excel.
PeteW

9
Я получаю только [объект объекта]
norbidrak

1
Консоль говорит «undefined», но это не значит, что если произошел сбой. Это все еще копирует это в буфер обмена :)
Дин

1
УДИВИТЕЛЬНОЕ решение. Спасибо!
Бен Рондо

1
На сегодняшний день самое простое и надежное решение!
Крис Б.

130

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

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


13
Использование: копия (объект)
antoine

Примечание: вы можете использоватьrequire("util").format(...) вместо применения JSON.stringify()по одному. Модуль по НПМ работает как на Node.js и веб - браузеров. util
Константин Ван

2
Если вы набираете copy (object) и он возвращает 'undefined', это на самом деле успех. Объект теперь находится в вашем буфере обмена и может быть вставлен.
Дин

7

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

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


Я получаю сообщение об ошибке -SyntaxError: export declarations may only appear at top level of a module --> debugout.js:9
Senura Dissanayake

@SenuraDissanayake попробуйте сейчас - мне пришлось вернуть чей-то пиар, который я не тестировал: /
inorganik

3

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


просто без каких-либо указаний на то, что ошибка против убывающего против журнала.
Паулюс Лиекис


2

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

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

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

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


2

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

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

который был никому не нужен.

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

введите описание изображения здесь


в конце написано, что длинный текст был усечен , если при нажатии кнопки « Копировать» копируются все 20,6 МБ?
Эдуард Флоринеску

1
@EduardFlorinescu да, все
Адам Эй
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.