2008-09-18 5 views
9

잘 알려진 로깅 라이브러리의 JS 네임 스페이스를 검사하는 "보편적 인"디버그 로깅 기능을 만들고 싶습니다. 방화범이 설치되어있는 경우Javascript에서 사용할 수있는 디버그 로깅 도구는 무엇입니까?

var console = window['console']; 
if (console && console.log) { 
    console.log(message); 
} 

물론, 파이어 폭스에서이 유일한 작품/사용 가능 (그것은 또한 Firebug Lite와 다른 브라우저에서 작동됩니다) : 예를 들어

는, 현재는 방화범의 CONSOLE.LOG을 지원합니다. 기본적으로, 나는 어떤 환경을 가져올 지 모르는 JS 라이브러리를 제공 할 것이고 디버그 출력을 사용자에게보고 할 수있는 방법이 있는지 알고 싶습니다.

아마도 jQuery는 뭔가를 제공합니다. jQuery가 있는지 확인하고 사용합니다. 아니면 내가 잘 할 수있는 잘 알려진 IE 플러그인이있을 수 있습니다. 그러나 이것은 꽤 잘 확립되고 사용 된 메커니즘이어야합니다. 사람들이 만드는 모든 모호한 로그 기능을 검사 할 수는 없습니다.

응답 당 하나의 라이브러리/기술 만 제공되므로 투표율이 높아집니다. 또한, alert()를 사용하는 것은 좋은 단기 솔루션이지만 강력한 디버그 로깅을 원하거나 실행을 차단하는 것이 문제가되는 경우에는 문제가 발생합니다.

답변

-1

나 자신, 나는 다음에 확고한 신자입니다 :

alert('Some message/variables'); 
+0

이것은 좋은 일시적인 해결책이지만 일반적으로 많은 정보 수준 로깅을 내보내는 경우 실패합니다. 응용 프로그램은 모든 alert()로 인해 곧 쓸모 없게 될 것입니다. – levik

+0

Ahh, 정보의 단기 출력에 대해 더 많은 정보가 있다고 가정했습니다. – Teifion

+0

경고가 차단 통화이기 때문에 간단히 "출력"하는 경우에도 불행히도 원인, 부작용, 특히. 아약스와 나는 단지 잘못된 장소에 경고를하기 때문에 코드가 제대로 동작하지 못하게했다. –

4

Firebug lite 크로스 브라우저거야 적어도 당신에게 대부분의 브라우저에 CONSOLE.LOG 기능을 제공하는 것이 Firefbug의 라이트 버전입니다.

0

Firebug Lite (Firefox가 아닌 브라우저의 경우)은 어떨까요? IE에서 Dojo 코드를 디버깅 할 때를 제외하고는 많이 사용하지 않았습니다. 하지만 IE, Safari 및 Opera에 Firebug 콘솔을 설치하는 것이 최선의 방법입니다.

물론 항상 신뢰할 수있는 '경고 (err_msg); : D

1

이미 jQuery를 사용하고 있다면 jQuery 디버그 플러그인 (a.k.a., jquery.debug.js)을 진심으로 추천 할 수 있습니다. http://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/을 참조하십시오.

이 플러그인을 사용하면 전역 스위치를 통해 디버그 로깅을 켜거나 끌 수 있습니다. 로깅은 다음과 같습니다

$.log('My value is: ' + val); 

출력은 파이어 폭스에서 CONSOLE.LOG에 전송되고 다른 브라우저에 페이지 하단에 삽입 사업부 블록에 기록됩니다.

+0

jQuery를 사용하지 않습니다. - 명시된 바와 같이 jQuery가있는 페이지에로드 될 수있는 라이브러리를 생성합니다. 이런 일이 생기면, 필자가 의지 할 수있는 jQuery 기능을 사용하고 싶다. 그러나 제 3 자 플러그인은 확장 성이있다. – levik

7

개인적으로 Firebug/Firebug Lite를 사용하고 IE에서 Visual Studio에서 디버깅을 수행합니다. 방문자가 미친 브라우저를 사용하고있을 때 이것들 중 아무 것도 좋지 않습니다. 서버에 오류를 기록하려면 클라이언트 측 javascript가 필요합니다. 아래에 링크 된 파워 포인트 프레젠테이션을 살펴보십시오. 그것은 귀하의 서버에 물건을 기록하는 자바 스크립트를 얻는 방법에 대한 몇 가지 예쁜 아이디어가 있습니다.

기본적으로 window.onerror와 try {} catch() {} 블록을 유용한 디버그 정보로 서버에 다시 요청하는 함수와 연결합니다.

저는 웹 응용 프로그램에서 이러한 프로세스를 구현했습니다. 모든 catch() {} 블록은 JSON으로 인코딩 된 메시지를 서버로 다시 보내는 함수를 호출합니다. 서버는 다시 기존의 로깅 인프라 (내 경우 log4perl)를 사용합니다.내가 연결하는 프레젠테이션은 오류를 GET 요청의 일부로 포함시키는 자바 스크립트의 이미지로드를 제안합니다. 유일한 문제는 스택 추적 (IE가 전혀 생성하지 않음)을 포함시키려는 경우 요청이 너무 커질 수 있다는 것입니다.

Tracking ClientSide Errors, by Eric Pascarello

PS : 나는 어쩌면 당신이 를 기록하는 오류의 원인이이기 때문에이 "하드 코어"로깅을 위해 jQuery를 같은 라이브러리의 어떤 종류를 사용하는 것이 좋습니다 생각 해달라고 추가하고 싶었 jQuery 또는 Firebug Lite! 어쩌면 오류는 브라우저 (기침 IE6)가 일부 미친로드 순서를 수행하고 라이브러리를 올바르게로드하기에 너무 어리석기 때문에 널 참조 오류가 발생합니다.

내 인스턴스에서 모든 자바 스크립트 로그 코드가 < 머리 >에 있고 .js 파일로 가져 오지 않았 음을 확인했습니다. 이렇게하면 브라우저가 어떤 종류의 커브 볼을 던지더라도 확율이 좋으면 로그 할 수 있다는 것은 합리적으로 확신 할 수 있습니다.

3

MochiKit는 (전체 네임 스페이스 해상도와 여기에 포함)은 다음과 같은 기능이 있습니다

MochiKit.Logging.logDebug() // prefaces value with "DEBUG: " 
MochiKit.Logging.log() // prefaces value with "INFO: " 
MochiKit.Logging.logError() // prefaces value with "ERROR: " 
MochiKit.Logging.logFatal() // prefaces value with "FATAL: " 
MochiKit.Logging.logWarning() // prefaces value with "WARNING: " 

이보다 MochiKit.Logging 네임 스페이스에 대한 더 많은있다, 그러나 이것들은 기본이다.

7

log4javascript을 시도해 볼 수 있습니다.

공개 : 작성했습니다.

관련 문제