460 Stimmen

JavaScript: Wie drucke ich eine Meldung auf der Fehlerkonsole aus?

Wie kann ich eine Meldung auf der Fehlerkonsole ausgeben, vorzugsweise unter Angabe einer Variablen?

Zum Beispiel so etwas wie:

print('x=%d', x);

9 Stimmen

Von welcher Konsole sprechen Sie? Browser-Konsole oder JavaScript-Framework-spezifische Konsole?

0 Stimmen

477voto

Dan Punkte 58216

Installieren Sie Firebug und dann können Sie console.log(...) y console.debug(...) , usw. (siehe die Dokumentation für mehr).

343voto

Nicholas Punkte 5051
console.error(message); // Outputs an error message to the Web Console
console.log(message); // Outputs a message to the Web Console
console.warn(message); // Outputs a warning message to the Web Console
console.info(message); // Outputs an informational message to the Web Console. In some browsers it shows a small "i" in front of the message.

Sie können auch CSS hinzufügen:

console.log('%c My message here', "background: blue; color: white; padding-left:10px;");

Weitere Informationen finden Sie hier: https://developer.mozilla.org/en-US/docs/Web/API/console

86voto

Ivo Danihelka Punkte 3324

Ausnahmen werden in der JavaScript-Konsole protokolliert. Das können Sie nutzen, wenn Sie die Firebug deaktiviert.

function log(msg) {
    setTimeout(function() {
        throw new Error(msg);
    }, 0);
}

Verwendung:

log('Hello World');
log('another message');

54voto

Ian Oxley Punkte 10746

Eine gute Möglichkeit, dies browserübergreifend zu tun, wird in Fehlersuche in JavaScript: Werfen Sie Ihre Alerts weg! .

15voto

dlaliberte Punkte 3182

Hier ist eine Lösung für die buchstäbliche Frage, wie man eine Meldung in die Fehlerkonsole des Browsers und nicht in die Debugger-Konsole ausgibt. (Es könnte gute Gründe geben, den Debugger zu umgehen.)

Wie ich in den Kommentaren zu dem Vorschlag, einen Fehler auszulösen, um eine Meldung in der Fehlerkonsole zu erhalten, angemerkt habe, besteht ein Problem darin, dass dadurch der Ausführungsfaden unterbrochen wird. Wenn Sie den Thread nicht unterbrechen wollen, können Sie den Fehler in einem separaten Thread auslösen, der mit setTimeout erstellt wird. Daher meine Lösung (die sich als eine Weiterentwicklung der Lösung von Ivo Danihelka herausstellt):

var startTime = (new Date()).getTime();
function logError(msg)
{
  var milliseconds = (new Date()).getTime() - startTime;
  window.setTimeout(function () {
    throw( new Error(milliseconds + ': ' + msg, "") );
  });
}
logError('testing');

Ich gebe die Zeit in Millisekunden seit der Startzeit an, weil die Zeitüberschreitung die Reihenfolge, in der Sie die Meldungen erwarten, verschieben könnte.

Das zweite Argument der Methode Error ist der Dateiname, der hier eine leere Zeichenkette ist, um die Ausgabe des nutzlosen Dateinamens und der Zeilennummer zu verhindern. Es ist möglich, die Aufruferfunktion zu erhalten, aber nicht auf eine einfache, browserunabhängige Weise.

Es wäre schön, wenn wir die Meldung mit einem Warn- oder Nachrichtensymbol anstelle des Fehlersymbols anzeigen könnten, aber ich kann keine Möglichkeit finden, dies zu tun.

Ein weiteres Problem bei der Verwendung von throw ist, dass es von einem umschließenden try-catch abgefangen und weggeworfen werden könnte, und das Ablegen des throw in einem separaten Thread vermeidet auch dieses Hindernis. Es gibt jedoch noch eine weitere Möglichkeit, wie der Fehler abgefangen werden könnte, nämlich wenn der window.onerror-Handler durch einen ersetzt wird, der etwas anderes tut. Da kann ich Ihnen nicht helfen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X