Szukaj…
Podstawowe logowanie po stronie serwera
Pierwszym krokiem do logowania jest po prostu uruchomienie Meteora z powłoki, a otrzymasz dzienniki serwera w konsoli poleceń.
meteor
Następnym krokiem jest potokowanie zawartości std_out i std_err do pliku dziennika, w następujący sposób:
meteor > my_app_log.log 2> my_app_err.log
Narzędzia do rejestrowania po stronie klienta
Po zalogowaniu się po stronie serwera nadszedł czas, aby przejść do strony klienta. Jeśli nie korzystałeś z interfejsu API konsoli, przygotuj się na niespodziankę. W rzeczywistości jest wiele rzeczy, które możesz zrobić dzięki wbudowanemu interfejsowi API konsoli, który jest natywny dla każdej instalacji Chrome i Safari. Tak bardzo, że może się okazać, że nie potrzebujesz Winstona ani innych platform logowania.
Pierwszą rzeczą, którą chcesz zrobić, to zainstalować narzędzia do rejestrowania i programowania dla klientów. Zarówno Chrome, jak i Safari są dostarczane z nimi, ale Firefox wymaga rozszerzenia Firebug.
Następnie zajrzyj do dokumentacji interfejsu API konsoli. Poniższe dwa dokumenty są nieocenionymi zasobami do nauki logowania do konsoli.
Narzędzia dla programistów Chrome
Zaawansowane narzędzia do rejestrowania serwerów
Po uruchomieniu zarówno rejestrowania po stronie serwera, jak i narzędzi programistycznych po stronie klienta, możesz zacząć patrzeć na rozszerzenia specyficzne dla Meteor, takie jak rozszerzenie Meteor Chrome DevTools. To pozwala obserwować logowanie serwera do klienta! Ponieważ baza danych jest wszędzie. Jak się loguje.
Rozszerzenie Chrome DevTools (serwer)
Błąd logowania na klapie bazy danych
Poniższy przykład przedstawia czas od 0,5 do 0,7 dni i ilustruje sposób rejestrowania błędu, gdy baza danych nie zapełniła jeszcze kursora po stronie klienta.
Template.landingPage.postsList = function(){
try{
return Posts.find();
}catch(error){
//color code the error (red)
console.error(error);
}
}
Rejestrowanie informacji o kontekście danych w szablonie pomocniczym
Poniższe korzysta z interfejsu API do logowania Chrome. Jeśli składnia .group()
jest używana w wielu szablonach, graficznie zorganizuje dzienniki konsoli z różnych szablonów w hierarchiczne drzewo.
Możesz także zobaczyć, jak sprawdzić bieżący kontekst danych i jak skorygować dane.
Template.landingPage.getId = function(){
// using a group block to illustrate function scoping
console.group('coolFunction');
// inspect the current data object that landingPage is using
console.log(this);
// inspect a specific field of the locally scoped data object
console.log(JSON.stringify(this._id);
// close the function scope
console.groupEnd();
return this._id;
}
Rejestrowanie zdarzeń i interakcji użytkownika
Prosty przykład użycia interfejsu Chrome Logging API.
Template.landingPage.events({
'click .selectItemButton':function(){
// color code and count the user interaction (blue)
console.count('click .selectItemButton');
}
});
Rejestrowanie za pomocą zmiennych poziomu dziennika
Rejestrowanie często może zagracać konsolę, dlatego często definiuje się poziomy dziennika, aby kontrolować, jakie szczegóły danych są rejestrowane. Częstym wzorcem jest określenie zmiennych poziomu dziennika.
var DEBUG = false;
var TRACE = false;
Template.landingPage.events({
'click .selectItemButton':function(){
TRACE && console.count('click .selectItemButton');
Meteor.call('niftyAction', function(errorMessage, result){
if(errorMessage){
DEBUG && console.error(errorMessage);
}
});
}
});
Wyłącz logowanie w produkcji
Niektóre zespoły stwierdzają, że chcą pozostawić instrukcje dziennika konsoli w kodzie, ale nie wyświetlają ich w trakcie produkcji. Zastąpią funkcje rejestrowania, jeśli zmienna nie jest ustawiona (prawdopodobnie zmienna środowiskowa). Dodatkowo może to kwalifikować się jako funkcja bezpieczeństwa w niektórych sytuacjach.
if (!DEBUG_MODE_ON) {
console = console || {};
console.log = function(){};
console.log = function(){};
console.error = function(){};
console.count = function(){};
console.info = function(){};
}
Winston
Jeśli potrzebujesz czegoś potężniejszego niż domyślne opcje rejestrowania, możesz przyjrzeć się narzędziu jak Winston. Przejdź do Atmosphere i po prostu wyszukaj jeden z wielu dostępnych pakietów Winston.
https://atmospherejs.com/?q=winston
Ostrzegamy jednak - Winston jest wyrafinowanym produktem i chociaż zapewnia wiele funkcjonalności, doda również złożoności twojej aplikacji.
Loglevel
Należy szczególnie wspomnieć o opracowanym przez społeczność pakiecie LogLevel. Wydaje się, że zachowuje równowagę między lekkością i prostotą obsługi, a jednocześnie dobrze współpracuje z rurociągiem pakietów Meteor oraz zachowuje numery linii i nazwy plików.
https://atmospherejs.com/practicalmeteor/loglevel