it-swarm.com.de

JavaScript: Wie drucke ich eine Nachricht an die Fehlerkonsole?

Wie kann ich eine Nachricht an die Fehlerkonsole ausgeben, die vorzugsweise eine Variable enthält? 

Zum Beispiel so etwas wie:

print('x=%d', x);
427
Mark Harrison

Installieren Sie Firebug und dann können Sie console.log(...) und console.debug(...) usw. verwenden (siehe die Dokumentation für weitere Informationen).

457
Dan
console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message

Sie können Ihren Protokollnachrichten auch CSS hinzufügen:

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

Ausnahmen werden an der JavaScript-Konsole angemeldet. Sie können dies verwenden, wenn Sie Firebug deaktiviert halten möchten.

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

Verwendungszweck:

log('Hello World');
log('another message');
84
Ivo Danihelka

Eine gute Methode, die cross-browser funktioniert, finden Sie in DEBUGGEN VON JAVASCRIPT: ALARME WEGWERFEN!.

55
Ian Oxley

Wenn Sie Safari verwenden, können Sie schreiben

console.log("your message here");

und es erscheint direkt auf der Konsole des Browsers.

15
Lukas

Hier finden Sie eine Lösung für die wörtliche Frage, wie eine Nachricht an die Fehlerkonsole des Browsers gedruckt werden soll, nicht an die Debugger-Konsole. (Es kann gute Gründe geben, den Debugger zu umgehen.)

Wie ich in Kommentaren zu dem Vorschlag bemerkt habe, einen Fehler auszulösen, um eine Nachricht in der Fehlerkonsole zu erhalten, besteht ein Problem darin, dass dadurch der Ausführungsthread unterbrochen wird. Wenn Sie den Thread nicht unterbrechen möchten, können Sie den Fehler in einem separaten Thread werfen, der mit setTimeout erstellt wurde. Daher meine Lösung (die sich als Ausarbeitung der 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 ein, da das Zeitlimit die Reihenfolge, in der Sie die Meldungen sehen könnten, verzerren könnte. 

Das zweite Argument der Error-Methode ist für den Dateinamen, der hier eine leere Zeichenfolge ist, um die Ausgabe des unbrauchbaren Dateinamens und der Zeilennummer zu verhindern. Es ist möglich, die Anruferfunktion zu erhalten, jedoch nicht auf eine einfache, browserunabhängige Weise. 

Es wäre schön, wenn wir die Nachricht mit einem Warn- oder Nachrichtensymbol anstelle des Fehlersymbols anzeigen könnten, aber ich finde keinen Weg, dies zu tun.

Ein weiteres Problem bei der Verwendung des Wurfs ist, dass er von einem umschließenden Try-Catch aufgefangen und weggeworfen werden kann. Wenn Sie den Wurf in einem separaten Thread platzieren, wird dieses Hindernis ebenfalls vermieden. Es gibt jedoch noch eine andere Möglichkeit, den Fehler abzufangen. Dies ist der Fall, wenn der window.onerror -Handler durch einen ersetzt wird, der etwas anderes tut. Kann dir da nicht helfen.

14
dlaliberte

Um die Frage tatsächlich zu beantworten:

console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);

Anstelle eines Fehlers können Sie auch info, log oder warn verwenden.

9
Yster

Wenn Sie Firebug verwenden und IE, Safari oder Opera ebenfalls unterstützen müssen, fügt Firebug Lite diesen Browsern die Unterstützung von console.log () hinzu.

8
Devon

Der Internet Explorer ist wie immer der große Elefant in Rollschuhen, der Sie daran hindert, einfach console.log() zu verwenden.

Das Log von jQuery kann leicht angepasst werden, aber es ist ein Schmerz, es überall hinzufügen zu müssen. Wenn Sie jQuery verwenden, können Sie es am Ende in Ihre jQuery-Datei einfügen, und zwar zuerst:

function log()
{
    if (arguments.length > 0)
    {
        // Join for graceful degregation
        var args = (arguments.length > 1) ? Array.prototype.join.call(arguments, " ") : arguments[0];

        // This is the standard; Firebug and newer WebKit browsers support this.
        try {
            console.log(args);
            return true;
        } catch(e) {
            // Newer Opera browsers support posting erros to their consoles.
            try {
                opera.postError(args);
                return true;
            } 
            catch(e) 
            {
            }
        }

        // Catch all; a good old alert box.
        alert(args);
        return false;
    }
}
5
Chris S

Eine Anmerkung zu 'throw ()', die oben erwähnt wurde. Es scheint, dass die Ausführung der Seite vollständig gestoppt wird (ich habe in IE8 nachgesehen), daher ist es nicht sehr nützlich, um "laufende Prozesse" zu protokollieren (wie eine bestimmte Variable zu verfolgen ...).

Mein Vorschlag ist vielleicht, irgendwo in Ihrem Dokument ein textarea -Element hinzuzufügen und seinen Wert zu ändern (oder anzufügen) (der seinen Text ändern würde), um Informationen zu protokollieren, wann immer dies erforderlich ist ...

5
Yuval A.

Der Webinspektor WebKit unterstützt auch die Konsolen-API von Firebug (nur eine kleine Ergänzung zu Dans Antwort ).

5
olliej

Unter https://developer.chrome.com/devtools/docs/console-api finden Sie eine vollständige Referenz zu den Konsolen-APIs

    console.error(object[Obj,....])\

In diesem Fall wäre das Objekt Ihre Fehlerzeichenfolge

4
devSouth555

function foo() {
  function bar() {
    console.trace("Tracing is Done here");
  }
  bar();
}

foo();

console.log(console); //to print console object
console.clear('console.clear'); //to clear console
console.log('console.log'); //to print log message
console.info('console.info'); //to print log message 
console.debug('console.debug'); //to debug message
console.warn('console.warn'); //to print Warning
console.error('console.error'); //to print Error
console.table(["car", "fruits", "color"]);//to print data in table structure
console.assert('console.assert'); //to print Error
console.dir({"name":"test"});//to print object
console.dirxml({"name":"test"});//to print object as xml formate

To Print Error:- console.error('x=%d', x);

console.log("This is the outer level");
console.group();
console.log("Level 2");
console.group();
console.log("Level 3");
console.warn("More of level 3");
console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");

3
Parth Raval
console.log("your message here");

ich arbeite für mich ... Ich suche nach diesem ... Ich habe Firefox verwendet ... Hier ist mein Skript.

 $('document').ready(function() {
console.log('all images are loaded');
});

funktioniert in Firefox und Chrome.

1
D.K

Der einfachste Weg dies zu tun ist:

console.warn("Text to print on console");

Um Ihre Frage zu beantworten, können Sie ES6-Funktionen verwenden.

var var=10;
console.log(`var=${var}`);
0
Aniket Kulkarni

Mit der es6-Syntax können Sie Folgendes verwenden:

console.log(`x = ${x}`);
0
jkordas

Dies wird nicht auf der Konsole gedruckt, aber Sie erhalten eine Warnmeldung mit Ihrer Nachricht, die für das Debuggen nützlich sein kann:

mach einfach:

alert("message");
0
mmm