Czy istnieje jakiś szybki sposób, aby Chrome wyświetlał znaczniki czasu podczas console.log
zapisywania (podobnie jak Firefox). Czy też new Date().getTime()
przygotowywanie jedynej opcji?
javascript
google-chrome
UpTheCreek
źródło
źródło
Odpowiedzi:
W Chrome dostępna jest opcja Ustawienia konsoli (Narzędzia dla programistów -> Konsola -> Ustawienia [prawy górny róg]) o nazwie „Pokaż znaczniki czasu”, co jest dokładnie tym, czego potrzebowałem.
Właśnie to znalazłem. Nie są potrzebne żadne inne brudne włamania, które niszczą symbole zastępcze i usuwają miejsce w kodzie, z którego wiadomości zostały zarejestrowane.
Aktualizacja dla Chrome 68+
Ustawienie „Pokaż znaczniki czasu” zostało przeniesione do panelu Preferencje w „Ustawieniach DevTools”, znajdującym się w prawym górnym rogu szuflady DevTools:
źródło
Spróbuj tego:
Lub to, jeśli chcesz znacznik czasu:
Aby zarejestrować więcej niż jedną rzecz i ładnie (np. Reprezentacja drzewa obiektów):
Z ciągiem formatu ( JSFiddle )
Wytwarza z tym:
PS: Testowane tylko w Chrome.
PPS:
Array.prototype.slice
nie jest tutaj idealny, ponieważ byłby rejestrowany jako tablica obiektów, a nie szereg.źródło
Możesz użyć narzędzia do tworzenia profilów dla programistów.
„Nazwa timera” musi być taka sama. Możesz użyć wielu wystąpień timera o różnych nazwach.
źródło
console.timeStamp('foo')
jako żółty punkt na osi czasu. Nie działało to dla mnie przy użyciu nazw ze spacjami.console.log
lub logowaniaPierwotnie dodałem to jako komentarz, ale chciałem dodać zrzut ekranu, ponieważ co najmniej jedna osoba nie mogła znaleźć opcji (a może z jakiegoś powodu nie była dostępna w ich konkretnej wersji).
W Chrome 68.0.3440.106 (a teraz zalogowany w 72.0.3626.121) musiałem
źródło
Konwertuję
arguments
na Array za pomocą,Array.prototype.slice
aby mócconcat
z innym Array tego, co chcę dodać, a następnie przekazać doconsole.log.apply(console, /*here*/)
;Wydaje się, że
arguments
można toArray.prototype.unshift
również edytować, ale nie wiem, czy modyfikowanie go w ten sposób jest dobrym pomysłem / będzie miało inne skutki uboczneźródło
+new Date
iDate.now()
są alternatywnymi sposobami uzyskiwania znaczników czasuźródło
Jeśli używasz przeglądarki Google Chrome, możesz użyć interfejsu API konsoli Chrome:
Czas, jaki upłynął między tymi dwoma połączeniami, jest wyświetlany w konsoli.
Aby uzyskać szczegółowe informacje, zobacz link do dokumentu: https://developers.google.com/chrome-developer-tools/docs/console
źródło
Z Chrome 68:
„Pokaż znaczniki czasu” przeniesiono do ustawień
Pole wyboru Pokaż znaczniki czasu poprzednio w Ustawieniach konsoli Ustawienia konsoli zostały przeniesione do Ustawień .
źródło
Spróbuj również:
Ta funkcja umieszcza znacznik czasu, nazwę pliku i numer wiersza tak samo jak wbudowany
console.log
.źródło
log
Utworzona w ten sposób funkcja zawiesza stały znacznik czasu; będziesz musiał ponownie uruchomić to za każdym razem, gdy chcesz mieć aktualny czas [= aktualna data; -]. Można to uczynić funkcją, ale trzeba by jej używać jakmklog()(...)
zamiastlog()
.Jeśli chcesz zachować informacje o numerze linii (każdy komunikat wskazujący na jego wywołanie .log (), a nie wszystkie wskazujące na nasze opakowanie), musisz użyć
.bind()
. Możesz wstawić dodatkowy argument znacznika czasu za pomocą,console.log.bind(console, <timestamp>)
ale problem polega na tym, że musisz go ponownie uruchomić za każdym razem, aby uzyskać funkcję związaną ze świeżym znacznikiem czasu. Niezręcznym sposobem na to jest funkcja, która zwraca funkcję powiązaną:który następnie musi być użyty z podwójnym wywołaniem:
ALE możemy wykonać pierwsze połączenie niejawnie, instalując właściwość z funkcją getter:
Teraz po prostu zadzwoń
console.log(...)
i automatycznie przygotuje znacznik czasu!Możesz nawet osiągnąć to magiczne zachowanie za pomocą prostego
log()
zamiastconsole.log()
robićObject.defineProperty(window, "log", ...)
.Zobacz https://github.com/pimterry/loglevel, aby zapoznać się z dobrze wykonanym bezpiecznym owijaniem konsoli
.bind()
z obsługą błędów zgodności.Zobacz https://github.com/eligrey/Xccessors, aby zapoznać się z awariami zgodności z
defineProperty()
wcześniejszymi__defineGetter__
interfejsami API. Jeśli żaden interfejs API właściwości nie działa, należy powrócić do funkcji opakowania, która za każdym razem otrzymuje nowy znacznik czasu. (W takim przypadku tracisz informacje o numerze linii, ale znaczniki czasu będą nadal wyświetlane).Boilerplate: Formatowanie czasu tak, jak lubię:
źródło
Dodaje to funkcję „logowania” do zakresu lokalnego (przy użyciu
this
) przy użyciu dowolnej liczby argumentów:Możesz więc z niego korzystać:
Wyprowadza coś takiego:
źródło
rozszerzyło bardzo przyjemne rozwiązanie „z ciągiem formatu” z JSmyth o obsługę
console.log
zmiany (log
,debug
,info
,warn
,error
)09:05:11.518
vs.2018-06-13T09:05:11.518Z
)console
jego funkcje nie istnieją w przeglądarkach.
źródło
Utl.js
powyżej . więc włączenie (komentowanie na żądanie /Utl.consoleWithTimestamps(...)
wejście / wyłączenie) może mieć sensMam to w większości aplikacji Node.JS. Działa również w przeglądarce.
źródło
Rozwiązanie ES6:
gdzie
timestamp()
zwraca faktycznie sformatowany znacznik czasu ilog
dodaje znacznik czasu i propaguje wszystkie własne argumentyconsole.log
źródło
Udoskonalenie odpowiedzi JSmyth:
To:
.log
źródło
console.log(document, window)
, tzn. Bez założenia ciągu formatującego, dostaniesz coś jak2014-02-15T20:02:17.284Z > [object HTMLDocument] Window {…}
zamiastdocument
być reprezentowanym jako rozszerzalne drzewo obiektów.