Gibt es eine schnelle Möglichkeit, Chrome dazu zu bringen, Zeitstempel in console.log
Schreibvorgängen auszugeben (wie es Firefox tut) ? Oder ist das Voranstellen new Date().getTime()
die einzige Option?
javascript
google-chrome
UpTheCreek
quelle
quelle
Antworten:
In Chrome gibt es die Option "Konsoleneinstellungen" (Entwicklertools -> Konsole -> Einstellungen [obere rechte Ecke]) mit dem Namen "Zeitstempel anzeigen", die genau das ist, was ich brauchte.
Ich habe es gerade gefunden. Es sind keine weiteren schmutzigen Hacks erforderlich, die Platzhalter zerstören und die Stelle im Code löschen, von dem aus die Nachrichten protokolliert wurden.
Update für Chrome 68+
Die Einstellung "Zeitstempel anzeigen" wurde in den Bereich "Einstellungen" der "DevTools-Einstellungen" in der oberen rechten Ecke der DevTools-Schublade verschoben:
quelle
Versuche dies:
Oder dies, falls Sie einen Zeitstempel wünschen:
Um sich einzuloggen mehr als eine Sache und in einer netten Art und Weise (wie Objektbaumdarstellung):
Mit Formatzeichenfolge ( JSFiddle )
Ausgaben damit:
PS: Nur in Chrome getestet.
PPS:
Array.prototype.slice
ist hier nicht perfekt, da es als Array von Objekten und nicht als Serie von Objekten protokolliert wird.quelle
Sie können den Dev Tools Profiler verwenden.
"Timername" muss identisch sein. Sie können mehrere Instanzen von Timern mit unterschiedlichen Namen verwenden.
quelle
console.timeStamp('foo')
nur einen gelben Punkt in der Zeitleiste. Es hat bei mir nicht funktioniert, wenn ich Namen mit Leerzeichen verwendet habe.console.log
oder die Protokollierung überhauptIch habe dies ursprünglich als Kommentar hinzugefügt, wollte aber einen Screenshot hinzufügen, da mindestens eine Person die Option nicht finden konnte (oder sie aus irgendeinem Grund in ihrer jeweiligen Version nicht verfügbar war).
Auf Chrome 68.0.3440.106 (und jetzt in 72.0.3626.121 eingecheckt) musste ich
quelle
Ich konvertiere
arguments
in Array mit,Array.prototype.slice
damit ichconcat
mit einem anderen Array von dem, was ich hinzufügen möchte, es dann übergeben kannconsole.log.apply(console, /*here*/)
;Es scheint, dass
arguments
dies auchArray.prototype.unshift
bearbeitet werden kann, aber ich weiß nicht, ob eine solche Änderung eine gute Idee ist / andere Nebenwirkungen haben wirdquelle
+new Date
undDate.now()
sind alternative Möglichkeiten, um Zeitstempel zu erhaltenquelle
Wenn Sie den Google Chrome-Browser verwenden, können Sie die Chrome Console-API verwenden:
Die zwischen diesen beiden Anrufen verstrichene Zeit wird in der Konsole angezeigt.
Weitere Informationen finden Sie unter dem Link zum Dokument: https://developers.google.com/chrome-developer-tools/docs/console
quelle
Aus Chrome 68:
"Zeitstempel anzeigen" wurde in die Einstellungen verschoben
Die anzeigen Zeitstempel Checkbox zuvor in Konsoleneinstellungen Konsoleneinstellungen werden verschoben Einstellungen .
quelle
Versuchen Sie dies auch:
Mit dieser Funktion werden Zeitstempel, Dateiname und Zeilennummer mit dem integrierten Wert identisch
console.log
.quelle
log
diese Weise erstellte Funktion friert einen festen Zeitstempel ein. Sie müssten dies jedes Mal wiederholen, wenn Sie eine aktuelle Uhrzeit wünschen [= aktuelles Datum; -]. Es ist möglich, dies zu einer Funktion zu machen, aber Sie müssten es wiemklog()(...)
statt verwendenlog()
.Wenn Sie die Zeilennummerninformationen beibehalten möchten (jede Nachricht, die auf ihren .log () -Aufruf verweist, nicht alle auf unseren Wrapper), müssen Sie verwenden
.bind()
. Sie können ein zusätzliches Zeitstempel-Argument über voranstellen.console.log.bind(console, <timestamp>)
Das Problem besteht jedoch darin, dass Sie dieses Argument jedes Mal erneut ausführen müssen, um eine Funktion mit einem neuen Zeitstempel zu verknüpfen. Ein umständlicher Weg, dies zu tun, ist eine Funktion, die eine gebundene Funktion zurückgibt:was dann mit einem doppelten Aufruf verwendet werden muss:
ABER wir können den ersten Aufruf implizit machen, indem wir eine Eigenschaft mit der Getter-Funktion installieren :
Jetzt rufen Sie einfach an
console.log(...)
und es wird automatisch ein Zeitstempel vorangestellt!Sie können dieses magische Verhalten sogar mit einem einfachen
log()
stattconsole.log()
durch Tun erreichenObject.defineProperty(window, "log", ...)
.Unter https://github.com/pimterry/loglevel finden Sie einen gut gemachten sicheren Konsolen-Wrapper
.bind()
mit Kompatibilitäts-Fallbacks.Unter https://github.com/eligrey/Xccessors finden Sie Kompatibilitätsrückschläge von
defineProperty()
der Legacy-__defineGetter__
API. Wenn keine der Eigenschaften-APIs funktioniert, sollten Sie auf eine Wrapper-Funktion zurückgreifen, die jedes Mal einen neuen Zeitstempel erhält. (In diesem Fall verlieren Sie die Zeilennummerninformationen, aber die Zeitstempel werden weiterhin angezeigt.)Boilerplate: Zeitformatierung nach meinen Wünschen:
quelle
Dadurch wird dem lokalen Bereich eine "Protokoll" -Funktion hinzugefügt (unter Verwendung
this
), wobei so viele Argumente verwendet werden, wie Sie möchten:So können Sie es verwenden:
Gibt ungefähr so aus:
quelle
erweiterte die sehr schöne Lösung "mit Formatzeichenfolge " von JSmyth auf Unterstützung
console.log
Variationen (log
,debug
,info
,warn
,error
)09:05:11.518
vs.2018-06-13T09:05:11.518Z
)console
oder seine Funktionen sind in Browsern nicht vorhanden.
quelle
Utl.js
oben .Utl.consoleWithTimestamps(...)
Daher kann es sinnvoll sein, den Override zu aktivieren (bei Bedarf zu kommentieren)Ich habe dies in den meisten Node.JS-Apps. Es funktioniert auch im Browser.
quelle
ES6-Lösung:
Dabei werden
timestamp()
tatsächlich formatierte Zeitstempel zurückgegebenlog
, ein Zeitstempel hinzugefügt und alle eigenen Argumente an weitergegebenconsole.log
quelle
Eine Verfeinerung der Antwort von JSmyth:
Dies:
.log
quelle
console.log(document, window)
, wenn Sie , dh ohne die Annahme einer Formatzeichenfolge, etw bekommen würden. wie2014-02-15T20:02:17.284Z > [object HTMLDocument] Window {…}
anstattdocument
als erweiterbarer Objektbaum dargestellt zu werden.