• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Handle wszystkich errrorów JS

42 Warsaw Coding Academy
0 głosów
242 wizyt
pytanie zadane 19 sierpnia 2020 w JavaScript przez Greeenone Pasjonat (16,100 p.)

Hej,

Mam apkę napisaną w Vuejs i chciałbym łapać errory i warningi z console loga. Znalazłem coś takiego:

Vue.config.errorHandler = (err, vm, info) => {
 //
};

Kod ten działa ale nie łapie np.  errorów z methods. Chciałbym aby każdy error i warning był łapany.

Czy ktoś możne zna rozwiązanie na ten problem?
I jeszcze korzystając z okazji:
Lepiej użyć rollbara czy Senty?

komentarz 19 sierpnia 2020 przez ScriptyChris Mędrzec (190,190 p.)

Chodzi Ci o wrapowanie wszystkich metod console i żeby co z nimi zrobić?

komentarz 19 sierpnia 2020 przez Greeenone Pasjonat (16,100 p.)
Ogólnie to chodzi mi o przechwytywanie wszelkich błędów i ostrzeżeń. Normalnie apka nie posiada błędów i ostrzeżeń. Raz tam wyskoczył błąd gdy zrobiłem update profilu, odświeżyłem stronę i otworzyłem side panel (Wyskoczył błąd undefined). Teraz jako że z apki będzie korzystać 5 osób, to chciałbym obserwować czy nic się nie pojawia jak np. gdzieś zaległe tłumaczenie etc.

1 odpowiedź

0 głosów
odpowiedź 19 sierpnia 2020 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 19 sierpnia 2020 przez Greeenone
 
Najlepsza

Jeśli szukasz rozwiązania, które pozwoli na wysyłanie logów z przeglądarki na serwer, to są gotowe serwisy, na przykład:

https://logrocket.com/for/javascript-error-logging/

https://www.loggly.com/

http://logio.org/

Możesz też zrobić podstawową wersję sam. Nadpisz metody obiektu console własną funkcją, która w razie wywołania wyśle ajaxa z parametrami wywołania, stack tracem, komunikatem błędu itd na Twój serwer. Ewentualnie użyj Proxy na obiekcie console z trapem na apply, żeby zrobić to w bardziej kompaktowej formie.

komentarz 19 sierpnia 2020 przez Greeenone Pasjonat (16,100 p.)
Dzięki za podesłanie serwisów. Wlaśnie korzystam z takiego serwisu (Rollbara) i wszystko działa bez zarzutu tylko no wlaśnie vue nie przesyła wszystkich errorów do niego i w tym jest problem. Jak nadpisać taką metodę? Nie chodzi mi o gotowca tylko nakierowanie jak mam szukać tego :)
komentarz 19 sierpnia 2020 przez ScriptyChris Mędrzec (190,190 p.)
const consoleLog = console.log.bind(console);
console.log = function() {
    // pseudo tablica arguments zawiera argumenty, z którymi została wywołana funkcja
    // wysłanie ajax do serwera z parametrami loga (m.in. wspomniane arguments)

    consoleLog(...arguments); // wywołaj oryginalny console.log z tymi samymi argumentami
};

Analogicznie dla pozostałych metod obiektu console (na upartego można w pętli).

Ważne, żeby zrobić to jako pierwszy skrypt - zanim załaduje się jakikolwiek inny skrypt na stronie (Twój lub framework/biblioteka).

komentarz 19 sierpnia 2020 przez Greeenone Pasjonat (16,100 p.)
Serdecznie dziękuje! :)

Podobne pytania

+1 głos
0 odpowiedzi 205 wizyt
pytanie zadane 1 maja 2016 w JavaScript przez jegor377 Stary wyjadacz (13,230 p.)
0 głosów
1 odpowiedź 372 wizyt
pytanie zadane 19 lutego 2018 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
0 głosów
1 odpowiedź 365 wizyt
pytanie zadane 23 marca 2016 w C i C++ przez jegor377 Stary wyjadacz (13,230 p.)

93,380 zapytań

142,380 odpowiedzi

322,535 komentarzy

62,737 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...