Wie kann ich eine Nachricht an die Fehlerkonsole drucken, vorzugsweise mit einer Variablen?
Zum Beispiel so etwas wie:
print('x=%d', x);
Wie kann ich eine Nachricht an die Fehlerkonsole drucken, vorzugsweise mit einer Variablen?
Zum Beispiel so etwas wie:
print('x=%d', x);
Antworten:
Installieren Sie Firebug und dann können Sie console.log(...)
und console.debug(...)
usw. verwenden ( weitere Informationen finden Sie in der Dokumentation ).
console.log()
usw. in allen Browsern, einschließlich IE, funktionieren sollte. In allen Fällen muss jedoch das Debugger-Fenster zu diesem Zeitpunkt geöffnet sein, da sonst Aufrufe von console
Fehler verursachen.
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 Protokollierungsnachrichten auch CSS hinzufügen:
console.log('%c My message here', "background: blue; color: white; padding-left:10px;");
console.log
Verwendung CSS in der Konsole verwenden können: |
Ausnahmen werden in der JavaScript-Konsole protokolliert. Sie können dies verwenden, wenn Sie Firebug deaktiviert lassen möchten .
function log(msg) {
setTimeout(function() {
throw new Error(msg);
}, 0);
}
Verwendungszweck:
log('Hello World');
log('another message');
throw
in ein eingewickelt werden muss setTimeout
?
Eine gute Möglichkeit, dies browserübergreifend zu tun, ist das Debuggen von JavaScript: Werfen Sie Ihre Warnungen weg! .
throw()
ist definitiv nicht der Weg, dies zu tun. Sie werden früher oder später in Schwierigkeiten geraten. für mich war es früher :(
Hier finden Sie eine Lösung für die wörtliche Frage, wie eine Nachricht an die Fehlerkonsole des Browsers und nicht an die Debugger-Konsole gedruckt werden soll. (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 dies den Ausführungsthread unterbricht. Wenn Sie den Thread nicht unterbrechen möchten, können Sie den Fehler in einen separaten Thread werfen, der mit setTimeout erstellt wurde. Daher meine Lösung (die sich als eine 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 an, da das Zeitlimit die Reihenfolge verzerren kann, in der Sie möglicherweise die Nachrichten sehen.
Das zweite Argument für die Error-Methode betrifft den Dateinamen, bei dem es sich um eine leere Zeichenfolge handelt, um die Ausgabe des nutzlosen Dateinamens und der Zeilennummer zu verhindern. Es ist möglich, die Anruferfunktion zu erhalten, jedoch nicht auf 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 kann keinen Weg finden, dies zu tun.
Ein weiteres Problem bei der Verwendung von Throw besteht darin, dass es von einem umschließenden Try-Catch gefangen und weggeworfen werden kann. Wenn Sie den Throw in einen separaten Faden legen, wird dieses Hindernis ebenfalls vermieden. Es gibt jedoch noch eine andere Möglichkeit, wie der Fehler abgefangen werden kann, wenn der window.onerror-Handler durch einen ersetzt wird, der etwas anderes bewirkt. Kann dir da nicht helfen.
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 von Fehlern können Sie auch info, log oder warn verwenden.
console.error(..)
um eine nicht standardmäßige Funktion, die nicht in der Produktion verwendet werden sollte. Wie sehen Sie das? Haben Sie Vorschläge für einen unerfahrenen Programmierer, der console.error
vs verwendet console.log
?
console.log(...)
"nicht standardisiert". In dieser Hinsicht console.error
ist so stabil wie console.log
.
Wenn Sie Firebug verwenden und auch IE, Safari oder Opera unterstützen müssen, fügt Firebug Lite diesen Browsern die Unterstützung console.log () hinzu.
Der WebKit Web Inspector unterstützt auch die Konsolen-API von Firebug (nur eine kleine Ergänzung zu Dans Antwort ).
Ein Hinweis zu 'throw ()', der oben erwähnt wurde. Es scheint, dass die Ausführung der Seite vollständig gestoppt wird (ich habe IE8 überprüft), daher ist es nicht sehr nützlich, um "laufende Prozesse" zu protokollieren (um eine bestimmte Variable zu verfolgen ...)
Mein Vorschlag ist vielleicht, irgendwo in Ihrem Dokument ein Textbereichselement hinzuzufügen und seinen Wert (der seinen Text ändern würde ) zu ändern (oder an ihn anzuhängen ), um Informationen bei Bedarf zu protokollieren ...
console.log()
, throw()
etc. Darüber hinaus gibt es nichts falsch mit dem Verhalten , throw()
wie Sie scheinen zu implizieren , - die Tatsache , dass es stoppt die Ausführung ist beabsichtigt und dokumentiert ( Entwickler. mozilla.org/en-US/docs/Web/JavaScript/Reference/… ) und es stimmt damit überein, wie Ausnahmen in anderen Programmiersprachen ausgelöst / abgefangen werden. (Wenn Sie den Inhalt einer Variablen protokollieren möchten, ohne die Ausführung zu stoppen, console.log()
ist dies der Fall .)
console.log
- also gaben die Leute Alternativen. Es ist natürlich beabsichtigt, throw()
die Ausführung zu stoppen , niemand hat gesagt, dass dies nicht der Fall ist. Das ist der Grund, warum es normalerweise keine gute Möglichkeit ist, Debug-Informationen zur Laufzeit zu protokollieren, was das OP wollte ...
Wie immer ist Internet Explorer der große Elefant in Rollschuhen, der Sie davon abhält, einfach nur zu benutzen console.log()
.
Das Protokoll von jQuery kann recht einfach angepasst werden, ist jedoch ein Problem, da es überall hinzugefügt werden muss. Eine Lösung, wenn Sie jQuery verwenden, besteht darin, es am Ende in Ihre jQuery-Datei einzufügen.
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;
}
}
Unter https://developer.chrome.com/devtools/docs/console-api finden Sie eine vollständige Referenz zur Konsolen-API
console.error(object[Obj,....])\
In diesem Fall wäre das Objekt Ihre Fehlerzeichenfolge
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");
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}`);
Dies wird nicht auf der Konsole gedruckt, sondern öffnet ein Warn-Popup mit Ihrer Nachricht, das für einige Fehlerbehebungen hilfreich sein kann:
mach einfach:
alert("message");