Як зберегти вихід файлу console.log (об'єкт) у файл?


240

Я спробував використовувати JSON.stringify(object), але це не знижується на всій структурі та ієрархії.

З іншого боку, console.log(object)це робить, але я не можу це врятувати.

На console.logвиході я можу розгорнути по черзі всіх дітей і вибрати та скопіювати / вставити, але структура для цього велика.



Ви намагаєтесь зберегти console.log з браузера для цілей розвитку? Це може допомогти, якщо ви поясните, яка ваша кінцева мета.
travis

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
Клацання правою кнопкою миші не здійснюватиме глибоке збереження об'єкта.
користувач1032531

246

У випадку, якщо у вас об'єкт зареєстровано:

  • Клацніть правою кнопкою миші на об'єкті в консолі та клацніть Store as a global variable
  • вихід буде чимось на кшталт temp1
  • введіть консоль copy(temp1)
  • вставити в улюблений текстовий редактор

1
Я також виявив, що вставивши це в konklone.io/json, ви зможете швидко отримати це у файл CSV, а звідти в Excel.
PeteW

9
Я отримую лише [об’єкт об’єкта]
норбідрак

1
На консолі написано "невизначено", але це не означає, якщо не вдалося. Він все ще копіює його у буфер обміну :)
Дін

1
ДУМОВЕ рішення. Дуже дякую!
Бен Рондо

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

130

Ви можете використовувати команду API DevTools Utilities APIcopy() для копіювання рядкового представлення зазначеного об'єкта в буфер обміну.

Якщо у вас багато об’єктів, ви можете фактично JSON.stringify () всі свої об’єкти і продовжувати додавати їх до рядка. Тепер скористайтеся copy()методом, щоб скопіювати повний рядок у буфер обміну.


13
Використання: копія (об’єкт)
антоїн

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

2
Якщо ви введете копію (об'єкт) і вона повернеться "невизначено", це насправді успіх. Об'єкт зараз у вашому буфері обміну, і його можна вставити.
Декан

7

Є плагін з відкритим кодом javascript, який робить саме це - debugout.js

Debugout.js записує та зберігає console.logs, щоб програма могла отримати доступ до них. Повне розкриття, я це написав. Він належним чином форматує різні типи, може обробляти вкладені об'єкти та масиви, а також може додатково ставити часову позначку поруч із кожним журналом. Він також перемикає журнал живого опису в одному місці.


Я отримую помилку -SyntaxError: export declarations may only appear at top level of a module --> debugout.js:9
Senura

@SenuraDissanayake спробуйте зараз - мені довелося повернути чийсь PR, якого я не перевіряв: /
inorganik

3

клацніть правою кнопкою миші на консолі .. натисніть кнопку «Зберегти як .. її це просто» .. ви отримаєте вихідний текстовий файл


просто без жодних вказівок, що таке помилка проти зменшення проти журналу.
Паулій Лієкіс


2

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

JS LogFlush - це інтегроване рішення для журналювання JavaScript, яке включає:

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

Демо


2

На партію це справді пізно, але, можливо, це комусь допоможе. Моє рішення здається подібним до того, що ОП назвало проблематичним, але, можливо, це функція, яку пропонує 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.