Mögliche Duplizieren:
Logging Clientside JavaScript Errors on ServerLog Client-Seite Fehler an den Server
Wie kann ich mich einloggen Client-Seite JavaScript-Fehler auf dem Server? Ich benutze jQuery und MVC.
Mögliche Duplizieren:
Logging Clientside JavaScript Errors on ServerLog Client-Seite Fehler an den Server
Wie kann ich mich einloggen Client-Seite JavaScript-Fehler auf dem Server? Ich benutze jQuery und MVC.
Da es sich um clientseitige Fehler handelt, müssen Sie sie mithilfe von XMLHttpRequest an den Server senden.
window.onerror = function (msg, url, line)
{
var message = "Error in "+url+" on line "+line+": "+msg;
$.post("logerror.aspx", { "msg" : message });
}
Beachten Sie, dass line
und url
kann vor in IE-Versionen sehr ungenau sein bis 8.
window.onerror = Funktion (msg, url, line) arbeitete für mich – timborden
Gibt es irgendwelche Sicherheitsprobleme, die man mit diesem Ansatz beachten sollte? –
@Arman: keine davon zu sprechen. Jemand könnte die Anfrage an "logerror.aspx" mit einer benutzerdefinierten Nachricht fälschen, aber solange Ihr serverseitiger Code fest ist, gibt es keine Angriffsvektoren. –
Sie meine log4javascript verwenden könnte, was eine appender hat die XMLHttpRequest
verwendet, um: Sie könnten try...catch
Aussagen oder window.onerror
verwenden logge zum Server:
var log = log4javascript.getLogger("serverLog");
var ajaxAppender = new log4javascript.AjaxAppender("clientlogger.jsp");
log.addAppender(ajaxAppender);
try {
nonExistentFunction();
} catch(ex) {
log.error("Something's gone wrong!", ex);
}
Danke für diesen Vorschlag. Wissen Sie, ob es möglich ist, dies mit log4net zu verbinden? –
Es ist einfach genug, es manuell zu tun. Die Standardmethode, mit der 'AjaxAppender' Logging-Daten sendet, ist ein HTTP-Post mit Parametern, die Aspekte des Logging-Ereignisses darstellen, wie z. B. Nachricht, Zeitstempel, Schweregrad usw. Auf dem Server haben Sie eine Seite oder einen HTTP-Handler posten und einen log4net-Aufruf basierend auf den Post-Parametern erstellen. –
JSNLog (jsnlog.com) macht all das für Sie out of the box. Es besteht aus einer JavaScript-Protokollbibliothek und einer serverseitigen DLL, die Protokollnachrichten von der JavaScript-Bibliothek empfängt und an Ihre serverseitige Protokollbibliothek wie Log4Net, NLog oder Elmah weiterleitet. Sie können Ihre JavaScript-Logger in Ihrer web.config konfigurieren. Und es verfügt über alle möglichen Funktionen wie das Unterdrücken doppelter Nachrichten, das Stapeln von Nachrichten und das Filtern nach Browsertyp. – user1147862
Ich benutze im Moment das Elmah Logging Framework. Gibt es eine Möglichkeit, eine Lösung in diese zu verknüpfen? –
Ich fand diese nette gehostete Lösung für das Problem vor kurzem: http://errorceptive.com/ –
JSNLog (jsnlog.com) können Sie Zeichenfolgen und Objekte auf dem Client in Ihrem JavaScript protokollieren und sie auf dem Server mit Elmah speichern. Sie geben Elmah nur bei der Installation von JSNLog an. – user1147862