Làm cách nào để lưu đầu ra của console.log (object) vào một tệp?


239

Tôi đã thử sử dụng JSON.stringify(object) , nhưng nó không đi xuống toàn bộ cấu trúc và phân cấp.

Mặt khác console.log(object)làm điều đó nhưng tôi không thể lưu nó.

Trong console.logđầu ra, tôi có thể mở rộng từng cái một và chọn và sao chép / dán nhưng cấu trúc là lớn cho điều đó.



Bạn đang cố gắng lưu console.log từ trình duyệt cho mục đích phát triển? Nó có thể giúp nếu bạn giải thích mục tiêu cuối cùng của bạn là gì.
ngày

1
@MichaelS Tôi không tìm thấy đối tượng trong tệp nhật ký.
Eduard Florinescu

@travis Tôi muốn xuất một đối tượng sang JSON, nhưng tất cả hệ thống phân cấp, cũng là thuộc tính của anh ấy và thuộc tính của thuộc tính. Tôi thực tế muốn có được "giao diện" của một đối tượng ngoại trừ việc thực hiện các chức năng.
Eduard Florinescu

2
@MichaelS, những câu hỏi đó là về việc lưu toàn bộ nhật ký, câu hỏi này là về việc lưu một đối tượng. Họ khác biệt với quan điểm của tôi.
James McMahon

Câu trả lời:


305

Cập nhật: Bây giờ bạn có thể chỉ cần nhấp chuột phải

Nhấp chuột phải> Lưu dưới dạng trong Bảng điều khiển để lưu các thông điệp đã ghi vào một tệp.

Câu trả lời gốc:

Bạn có thể sử dụng đoạn mã devtools được hiển thị bên dưới để tạo phương thức console.save. Nó tạo ra một FileBlob từ đầu vào, sau đó tự động tải xuống.

(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)

Nguồn: http://bgrins.github.io/devtools-snippets/#console-save


2
Tôi không đến từ những người thả "Cảm ơn" ở mọi nơi cho đến khi câu trả lời bị chặn để ngăn 'cảm ơn'. Nhưng cảm ơn. Gonna xây dựng một phần mở rộng.
Léon Pelletier

14
Tính năng Save as ... thực sự không giúp được gì. Nó không lưu đối tượng JSON đầy đủ (trong trường hợp của tôi, tôi có một mảng các đối tượng, các thuộc tính đối tượng không được xuất trong tệp đầu ra). Nhưng hy vọng, đoạn trích cũ tốt mà bạn đã dán làm việc như một lá bùa. Cảm ơn bạn
M. Kejji

1
nếu lưu như didnt hoạt động, thì đó là một hồi quy. bạn nên gửi một lỗi tại crorms.com
Patrick

1
@ ishandutta2007 bạn không nên tải xuống bất kỳ đoạn trích nào - nó được tích hợp sẵn trong bảng điều khiển ngay bây giờ.
Patrick

10
Nhấp chuột phải sẽ không thực hiện lưu sâu đối tượng.
dùng1032531

245

Trong trường hợp bạn có một đối tượng đăng nhập:

  • Nhấp chuột phải vào đối tượng trong giao diện điều khiển và nhấp Store as a global variable
  • đầu ra sẽ giống như temp1
  • gõ vào bàn điều khiển copy(temp1)
  • dán vào trình soạn thảo văn bản yêu thích của bạn

1
Tôi cũng thấy rằng việc dán này vào konklone.io/json sau đó bạn có thể nhanh chóng đưa nó vào tệp CSV và từ đó vào Excel.
PeteW

9
Tôi chỉ nhận được [đối tượng]
norbidrak

1
Bảng điều khiển nói "không xác định", nhưng điều đó không có nghĩa là nếu thất bại. Nó vẫn sao chép nó vào clipboard :)
Dean

1
Giải pháp TUYỆT VỜI. Cám ơn rất nhiều!
Ben Rondeau

1
Cho đến nay các giải pháp đơn giản và đáng tin cậy nhất!
Chris B.

130

Bạn có thể sử dụng lệnh API tiện ích DevTools của Chromecopy() để sao chép biểu diễn chuỗi của đối tượng đã chỉ định vào bảng tạm.

Nếu bạn có nhiều đối tượng thì bạn thực sự có thể JSON.opesify () tất cả các đối tượng của bạn và tiếp tục nối chúng vào một chuỗi. Bây giờ sử dụng copy()phương pháp để sao chép chuỗi hoàn chỉnh vào clipboard.


13
Cách sử dụng: copy (object)
antoine 5/215

Lưu ý: bạn có thể sử dụngrequire("util").format(...) thay vì áp dụng JSON.stringify()từng cái một. Các utilmô-đun trên NPM hoạt động trên cả Node.js và trình duyệt web.
Toàn cảnh

2
Nếu bạn nhập bản sao (đối tượng) và nó trả về 'không xác định', đó thực sự là thành công. Đối tượng hiện đang ở trong clipboard của bạn và có thể được dán.
Trưởng khoa

7

Có một plugin javascript mã nguồn mở thực hiện điều đó - debugout.js

Debugout.js ghi lại và lưu console.logs để ứng dụng của bạn có thể truy cập chúng. Tiết lộ đầy đủ, tôi đã viết nó. Nó định dạng các loại khác nhau một cách thích hợp, có thể xử lý các đối tượng và mảng lồng nhau và có thể tùy ý đặt dấu thời gian bên cạnh mỗi nhật ký. Nó cũng bật tắt đăng nhập trực tiếp ở một nơi.


Tôi đang gặp lỗi -SyntaxError: export declarations may only appear at top level of a module --> debugout.js:9
Senura Dissanayake

@SenuraDissanayake thử ngay bây giờ - tôi đã hoàn nguyên PR của ai đó mà tôi đã không kiểm tra: /
inorganik

3

nhấp chuột phải vào bảng điều khiển .. nhấp lưu dưới dạng .. đơn giản này .. bạn sẽ nhận được một tệp văn bản đầu ra


chỉ cần không có bất kỳ dấu hiệu nào cho thấy lỗi vs waning vs log.
Paulius Liekis


2

Có một công cụ mã nguồn mở khác cho phép bạn lưu tất cả console.logđầu ra trong một tệp trên máy chủ của mình - JS LogFlush (plug!).

JS LogFlush là một giải pháp ghi nhật ký JavaScript tích hợp bao gồm:

  • thay thế giao diện người dùng không có giao diện người dùng của console.log - ở phía máy khách.
  • đăng nhập hệ thống lưu trữ - về phía máy chủ.

Bản giới thiệu


2

Điều này thực sự muộn cho bữa tiệc, nhưng có lẽ nó sẽ giúp được ai đó. Giải pháp của tôi có vẻ giống với những gì OP mô tả là có vấn đề, nhưng có lẽ đó là một tính năng mà Chrome cung cấp ngay bây giờ, nhưng sau đó thì không. Tôi đã thử nhấp chuột phải và lưu tệp .log sau khi đối tượng được ghi vào bàn điều khiển, nhưng tất cả những gì mang lại cho tôi là một tệp văn bản với điều này:

console.js: 230 Xong: Mảng (50000) [0, 9999] [10000, 19999] [20000, 29999] [30000, 39999] [40000, 49999] dài: 50000__proto__: Mảng (0)

mà không được sử dụng cho bất cứ ai.

Điều cuối cùng tôi làm là tìm console.log(data)mã trong đó, bỏ một điểm dừng trên đó và sau đó gõ JSON.Stringify(data)vào bảng điều khiển hiển thị toàn bộ đối tượng dưới dạng chuỗi JSON và bảng điều khiển Chrome thực sự cung cấp cho bạn một nút để sao chép nó . Sau đó dán vào trình soạn thảo văn bản và có JSON của bạn

nhập mô tả hình ảnh ở đây


Nó nói rằng cuối văn bản dài đã bị cắt bớt , nếu bạn nhấn Sao chép nó có sao chép toàn bộ 20,6 MB không?
Eduard Florinescu

1
@EduardFlorinescu có, mọi thứ
Adam Hey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.