console.log(object)の出力をファイルに保存する方法は?


239

を使ってみJSON.stringify(object)ましたが、全体の構造や階層が下がっていません。

一方、それconsole.log(object)はできますが、保存できません。

console.log出力では、すべての子を1つずつ展開し、選択してコピー/貼り付けできますが、そのために構造が大きくなっています。



開発目的でブラウザーからconsole.logを保存しようとしていますか?最終目標を説明すると役立つ場合があります。
トラビス

1
@MichaelSログファイルでオブジェクトが見つかりませんでした。
Eduard Florinescu 2012

@travisオブジェクトをJSONにエクスポートしたいが、すべての階層、彼のプロパティ、および彼のプロパティのプロパティ。関数の実装を除いて、オブジェクトの「インターフェース」を実際に取得したい。
Eduard Florinescu 2012

2
@MichaelS、これらの質問はログ全体の保存に関するもので、この質問は単一のオブジェクトの保存に関するものです。それらは私の見解とは異なります。
ジェームズマクマホン

回答:


305

更新: 右クリックするだけです

ログに記録されたメッセージをファイルに保存するには、コンソールパネルで右クリックして[名前を付けて保存]を選択します。

元の答え:

以下に示すこの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
「ありがとう」を防ぐために答えがブロックされるまで、私はどこにでも「ありがとう」を落とす人からではありません。しかし、ありがとう。拡張機能を作成します。
レオンペルティエ2015年

14
名前を付けて保存...機能は実際には役に立ちませんでした。それは完全なJSONオブジェクトを保存しません(私の場合、オブジェクトの配列があり、オブジェクトのプロパティは出力ファイルにエクスポートされませんでした)。しかし、うまくいけば、貼り付けた古き良きdevtool-snippetが魅力のように機能した。ありがとう
M.ケジ

1
機能しないとして保存した場合、それは回帰です。crbug.comでバグを報告する必要があります
Patrick

1
@ ishandutta2007スニペットをダウンロードするべきではありません-これは現在コンソールに組み込まれています。
Patrick

10
右クリックしてもオブジェクトの深い保存は行われません。
user1032531 2017

245

ログに記録されたオブジェクトがある場合:

  • コンソールでオブジェクトを右クリックして、 Store as a global variable
  • 出力は次のようになります temp1
  • コンソールに入力 copy(temp1)
  • お気に入りのテキストエディターに貼り付けます

1
これをkonklone.io/jsonに貼り付けると、すぐにこれをCSVファイルに、そこからExcelに取得できることもわかりました。
PeteW

9
[object Object]のみを取得します
norbidrak

1
コンソールには「未定義」と表示されますが、失敗したかどうかはわかりません。それはまだそれをクリップボードにコピーします:)
Dean

1
素晴らしいソリューション。本当にありがとう!
ベン・ロンドー

1
最もシンプルで信頼性の高いソリューションです。
クリスB.

130

Chrome DevTools Utilities API copy()コマンドを使用して、指定したオブジェクトの文字列表現をクリップボードにコピーできます。

多くのオブジェクトがある場合、実際にはすべてのオブジェクトをJSON.stringify()して、文字列に追加し続けることができます。copy()メソッドを使用して、完全な文字列をクリップボードにコピーします。


13
使用法:copy(object)
antoine 2015

注:1つずつ適用するrequire("util").format(...)代わりに使用できますJSON.stringify()NPM utilモジュールは、Node.jsとWebブラウザーの両方で機能します。
КонстантинВан

2
copy(object)と入力して「undefined」を返した場合、それは実際に成功しています。これでオブジェクトがクリップボードにあり、貼り付けることができます。
ディーン

7

それだけを行うオープンソースのJavaScriptプラグインがあります-debugout.js

Debugout.jsは、console.logsを記録して保存し、アプリケーションがアクセスできるようにします。完全な開示、私はそれを書きました。さまざまなタイプを適切にフォーマットし、ネストされたオブジェクトと配列を処理でき、オプションで各ログの横にタイムスタンプを付けることができます。また、ライブロギングを1か所で切り替えます。


私はエラーを取得しています-SyntaxError: export declarations may only appear at top level of a module --> debugout.js:9
Senura Dissanayakeを

@SenuraDissanayake今すぐ試す-私がテストしなかった誰かのPRを元に戻す必要がありました:/
inorganik

3

コンソールを右クリックします。名前を付けて保存をクリックします。これは簡単です。出力テキストファイルが表示されます。


何がエラーであるか、警告であるか、ログであるかを示すものはありません。
パウリウスリエキス


2

すべてのconsole.log出力をサーバー上のファイルに保存できる別のオープンソースツール、JS LogFlush(plug!)があります。

JS LogFlushは、以下を含む統合されたJavaScriptロギングソリューションです。

  • クロスブラウザUIを使用しないconsole.logの置き換え-クライアント側。
  • ログストレージシステム-サーバー側。

デモ


2

これは本当にパーティーに遅れますが、多分それは誰かを助けるでしょう。私の解決策はOPが問題があると説明したものに似ているようですが、おそらくそれはChromeが現在提供している機能ではありますが、そうではありません。オブジェクトをコンソールに書き込んだ後、.logファイルを右クリックして保存してみましたが、次のようなテキストファイルしかありませんでした。

console.js:230完了:Array(50000)[0…9999] [10000…19999] [20000…29999] [30000…39999] [40000…49999]長さ:50000__proto__:Array(0)

誰にとっても役に立たなかった。

console.log(data)コードでを見つけてブレークポイントをドロップJSON.Stringify(data)し、コンソールに入力すると、オブジェクト全体がJSON文字列として表示され、Chromeコンソールに実際にそれをコピーするためのボタンが表示されました。次に、テキストエディターに貼り付けます。JSONがあります。

ここに画像の説明を入力してください


最後に長いテキストが切り捨てられた表示されます。プレスの[ コピー]をクリックすると、20.6MB全体がコピーされますか?
Eduard Florinescu

1
@EduardFlorinescuはい、すべて
Adam Hey
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.