console.log (object)의 출력을 파일로 저장하는 방법?


240

나는을 사용해 보았지만 JSON.stringify(object)전체 구조와 계층 구조에서 떨어지지 않습니다.

다른 한편으로 console.log(object)는 그렇게하지만 나는 그것을 저장할 수 없습니다.

에서 console.log출력 내가 한 모든 어린이 하나를 확장하여 선택하고 복사 / 붙여 넣기하지만 구조는 그것에 대해 큰하는 것입니다 수 있습니다.



개발 목적으로 브라우저에서 console.log를 저장하려고합니까? 최종 목표가 무엇인지 설명하면 도움이 될 수 있습니다.
트래비스

1
@MichaelS 로그 파일에서 객체를 찾지 못했습니다.
에두아르 Florinescu

@travis 객체를 JSON으로 내보내고 모든 계층 구조와 속성 및 속성 속성을 내보내고 싶습니다. 실제로 함수 구현을 제외하고 객체의 "인터페이스"를 얻고 싶습니다.
Eduard Florinescu

2
@MichaelS, 그 질문은 전체 로그를 저장하는 것에 관한 것이며,이 질문은 단일 객체를 저장하는 것에 관한 것입니다. 그들은 내 관점과는 다릅니다.
James McMahon

답변:


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 객체를 저장하지 않습니다 (제 경우에는 객체 배열이 있었고 객체 속성이 출력 파일로 내보내지지 않았습니다). 그러나 희망적으로 붙여 넣은 오래된 오래된 도구 조각은 매력처럼 작동했습니다. 감사합니다
M. Kejji 2016 년

1
저장하지 않고 저장하면 회귀입니다. crbug.com에 버그를 신고해야합니다
Patrick

1
@ ishandutta2007 스 니펫을 다운로드해서는 안됩니다-콘솔에 내장되어 있습니다.
Patrick

10
마우스 오른쪽 버튼을 클릭하면 개체를 심도있게 저장할 수 없습니다.
user1032531

246

객체가 기록 된 경우 :

  • 콘솔에서 객체를 마우스 오른쪽 버튼으로 클릭하고 Store as a global variable
  • 출력은 다음과 같습니다 temp1
  • 콘솔에 입력 copy(temp1)
  • 좋아하는 텍스트 편집기에 붙여 넣기

1
또한 이것을 konklone.io/json에 붙여 넣으면 CSV 파일과 Excel에서 빠르게 가져올 수 있습니다.
PeteW

9
[object Object]
norbidrak

1
콘솔에 "정의되지 않음"이라고 표시되어 있지만 실패한 것은 아닙니다. 여전히 클립 보드에 복사합니다 :)
Dean

1
멋진 솔루션. 정말 고마워!
벤 Rondeau

1
지금까지 가장 단순하고 안정적인 솔루션!
Chris B.

130

당신이 사용할 수있는 크롬 DevTools로 유틸리티 API의 copy()명령을 클립 보드에 지정된 객체의 문자열 표현을 복사하는.

많은 객체가있는 경우 실제로 모든 객체를 JSON.stringify ()하고 문자열에 계속 추가 할 수 있습니다. 이제 copy()메소드를 사용 하여 전체 문자열을 클립 보드에 복사하십시오.


13
사용법 : copy (object)
antoine

참고 : 하나씩 적용 하는require("util").format(...) 대신 사용할 수 있습니다JSON.stringify() . NPM util모듈은 Node.js와 웹 브라우저 모두에서 작동합니다.
Константин Ван

2
copy (object)를 입력하고 '정의되지 않음'을 반환하면 실제로 성공입니다. 이제 개체가 클립 보드에 있으며 붙여 넣을 수 있습니다.
Dean

7

그렇게하는 오픈 소스 자바 스크립트 플러그인이 있습니다 -debugout.js

Debugout.js는 애플리케이션이 액세스 할 수 있도록 console.logs를 기록하고 저장합니다. 전체 공개, 나는 그것을 썼다. 다른 유형을 적절하게 형식화하고 중첩 된 오브젝트 및 배열을 처리 할 수 ​​있으며 선택적으로 각 로그 옆에 타임 스탬프를 넣을 수 있습니다. 또한 한 곳에서 실시간 로깅을 전환합니다.


나는 오류를 받고 있어요 -SyntaxError: export declarations may only appear at top level of a module --> debugout.js:9
Senura Dissanayake을

지금 시도 @SenuraDissanayake - 내가 테스트하지 않았다 되돌리기 사람의 PR을했다 : /
inorganik

3

콘솔을 마우스 오른쪽 버튼으로 클릭하십시오. 다른 이름으로 저장을 클릭하십시오.


오류 대 쇠퇴 대 로그에 대한 표시가 없습니다.
Paulius Liekis


2

console.log서버의 모든 파일을 JS LogFlush (plug!) 파일에 저장할 수있는 또 다른 오픈 소스 도구가 있습니다 .

JS LogFlush 는 다음을 포함하는 통합 JavaScript 로깅 솔루션입니다.

  • 클라이언트 측에서 console.log를 브라우저없이 UI없이 교체합니다.
  • 서버 측의 로그 스토리지 시스템.

데모


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.6MB를 복사합니까?
에두아르 Florinescu

1
@EduardFlorinescu 네, 모든 것
Adam Hey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.