code

javascript console.log 캡처?

codestyles 2020. 11. 10. 08:09
반응형

javascript console.log 캡처?


중복 가능성 :
Chrome에서 console.log 호출 가로 채기
자바 스크립트에서 콘솔 객체 (로깅 재 라우팅)를 확장 할 수 있습니까?

내 JS 앱이 console.log에 쓸 때 서버에 출력을 기록하는 AJAX를 수행 할 수 있도록 해당 로그 메시지를 캡처하고 싶습니다. 어떻게하나요?

로그에 기록하는 코드는 외부 서비스에서 가져온 것이므로 직접 ajax 할 수 없습니다.


다음과 같은 방식으로 JavaScript 함수를 하이재킹 할 수 있습니다.

(function(){
    var oldLog = console.log;
    console.log = function (message) {
        // DO MESSAGE HERE.
        oldLog.apply(console, arguments);
    };
})();
  1. 라인 1 은 함수를 클로저로 감싸므로 다른 함수가 직접 액세스 할 수 없습니다 oldLog(유지 관리상의 이유로).
  2. 라인 2 는 원래 방법을 캡처합니다.
  3. 3 행 은 새 함수를 만듭니다.
  4. 4 행message서버로 보내는 곳 입니다.
  5. 5 행 은 원래 처리 된 것처럼 원래 메소드를 호출합니다.

apply원래 인수 console 사용하여 호출 할 수 있도록 사용됩니다 . 와의 연관성에 의존 oldLog(message)하기 때문에 단순히 호출 이 실패 합니다.logconsole


아래의 zzzzBov의 주석 업데이트 는 IE9에서 console.log실제로 기능이 아니므로 oldLog.apply실패합니다. 자세한 내용 은 IE9에서 작동하지 않는 console.log.apply 를 참조하십시오.


단순한:

function yourCustomLog(msg) {
  //send msg via AJAX
}

window.console.log = yourCustomLog;

당신은 전체 오버라이드 (override) 할 수 있습니다 console캡처에 개체 console.info, console.warn등을 :

window.console = {
  log : function(msg) {...},
  info : function(msg) {...},
  warn : function(msg) {...},
  //...
}

참고 URL : https://stackoverflow.com/questions/11403107/capturing-javascript-console-log

반응형