수동 테스트만으로 JavaScript 오류를 찾는 데 문제가있는 ASP.NET 사이트를 운영하고 있습니다.
클라이언트 측에서 모든 JavaScript 오류를 포착하고 서버 (예 : 웹 서비스 또는 이와 유사한 것을 통해)에 기록 할 가능성이 있습니까?
수동 테스트만으로 JavaScript 오류를 찾는 데 문제가있는 ASP.NET 사이트를 운영하고 있습니다.
클라이언트 측에서 모든 JavaScript 오류를 포착하고 서버 (예 : 웹 서비스 또는 이와 유사한 것을 통해)에 기록 할 가능성이 있습니까?
답변:
onerror 이벤트에 대한 자체 핸들러를 설정하고 XMLHttpRequest를 사용하여 서버에 무엇이 잘못되었는지 알릴 수 있지만, 사양의 일부가 아니기 때문에 지원이 다소 불안정 합니다.
다음은 XMLHttpRequest를 사용하여 JavaScript 오류를 기록 하는 예제입니다 .
window.onerror = function(msg, url, line)
{
var req = new XMLHttpRequest();
var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line;
req.open("POST", "/scripts/logerror.php");
req.send(params);
};
setInterval
방법에 오류가 발생하면 서버가 과부하 될 수 있습니다 . 웹에서 사용할 수있는 많은 JS 오류보고 서비스가 있습니다. Checkout ErrLytics . 또한 웹 사이트의 모든 사용자 행동에 대한 분석을 제공합니다.
짧은 대답 : 예, 가능합니다.
더 긴 답변 : 사람들은 자신의 코드를 작성하여이 문제를 (적어도 부분적으로) 해결할 수있는 방법에 대해 이미 작성했습니다. 그러나 필요한 JS 코드가 많은 브라우저에서 작동하는지 확인한 것으로 보이는 서비스가 있다는 점에 유의하십시오. 다음을 찾았습니다.
아직 시도하지 않았기 때문에 이러한 서비스에 대해 말할 수 없습니다.
방금 직장에서 프로젝트의 자바 스크립트 오류에 대한 서버 측 오류 로깅을 구현했습니다. jQuery를 사용하는 레거시 코드와 새 코드가 혼합되어 있습니다.
window.onerror
jQuery 이벤트 핸들러와 onready 함수를 오류 처리 기능과 함께 조합 하여 래핑합니다 ( JavaScript 오류 추적 : 왜 window.onerror가 충분하지 않은지 참조 ).
window.onerror
: IE의 모든 오류 (및 Firefox의 대부분의 오류)를 포착하지만 Safari 및 Opera에서는 아무 작업도 수행하지 않습니다.오류를 발견하면 URL, 브라우저 등의 추가 속성을 추가 한 다음 ajax 호출을 사용하여 서버에 다시 게시합니다.
서버에는 게시 된 인수를 가져 와서 정상적인 서버 로깅 프레임 워크로 출력하는 작은 페이지가 있습니다.
이 코드를 jQuery 플러그인으로 공개하고 싶습니다. 관심이있는 사람이 있으면 알려주세요. 상사를 설득하는 데 도움이 될 것입니다!
Google Analytics를 사용하는 경우 Google Analytics 이벤트에 자바 스크립트 오류를 기록 할 수 있습니다.
이 앱보기 : http://siteapps.com/app/log_javascript_errors_with_ga-181
도움이되기를 바랍니다.
또한 TraceTool 유틸리티를 사용하는 것이 좋습니다. JavaScript 지원이 제공되며 JS 모니터링에 매우 편리합니다.
클라이언트 측 오류를 서버에 다시 기록하려면 일종의 서버 처리를 수행해야합니다. 가장 좋은 방법은 JavaScript (AJAX)를 통해 액세스 할 수있는 웹 서비스를 갖고 여기에 오류 로그 정보를 전달하는 것입니다.
문제가있는 웹 서비스를 호스팅하는 웹 서버에 문제가있는 경우 문제가 100 % 해결되지 않습니다. 다른 옵션은 쿼리 문자열을 통해 표준 페이지를 통해 정보를 보내는 것입니다. 브라우저가 이미지의 소스를로드하려고 시도하기 때문에 동적으로 생성 된 이미지 태그 (그런 다음 제거됨)를 통해 수행됩니다. 그래도 도메인 간 JavaScript 호출을 잘 처리합니다. 누군가 이미지가 꺼져 있으면 문제가 있음을 명심하십시오.)