2016-07-20 18 views
10

Chciałbym wprowadzić logowanie do aplikacji angular2 i chcę sprawdzić dobre biblioteki lub metody, które można polecić.Angular2 Logging

Wymagania dotyczące logowania to:

  • Będzie miał Konfigurowanie opcji logowania jak info, warn, error, debugowanie i gadatliwy.
  • Będzie mógł zachować dzienniki do pamięci lokalnej, a następnie po pewnym przedziale synchronizacji logi do punktu końcowego serwer
  • będzie w stanie obsługiwać formatu JSON i mieć kontrolę nad formatem dziennika

wymaganiu poniżej byłoby miło mieć i jakiekolwiek doświadczenie w pracy z web-workerem, którym możesz się podzielić, byłoby docenione.

  • Byłoby miło mieć funkcja rejestrowania zbudować jako web-pracownika więc z dala od wątku przeglądarki i moglibyśmy potencjalnie wykorzystać pamięć podręczną aplikacji jako czasowego składowania?

Wszelkie porady na ten temat są mile widziane.

+0

To może pomóc przy logowaniu http://www.code-sample.com/2016/09/angular-2-error-exception-logging.html –

Odpowiedz

1

Myślę, że JSNLog częściowo pasuje do twoich wymagań (jestem autorem JSNLoga).

JSNLog składa się z biblioteki po stronie klienta jsnlog.js i komponentu po stronie serwera. Biblioteka po stronie klienta wysyła elementy dziennika do komponentu po stronie serwera w żądaniach AJAX. Po zalogowaniu na serwer pozycje dziennika są przechowywane w dzienniku po stronie serwera. Wersja .Net 4.x wykorzystuje funkcję Common.Logging, aby obsługiwać dzienniki Log4Net, NLog, Elmah i Serilog. Wersja .Net Core obsługuje strukturę rejestrowania rdzeni.

Dopasowane JSNLog wyposażony ze swoimi wymaganiami:

Będzie miał Konfigurowanie opcji logowania jak informacja, uwaga, błąd, debugowania i opisowym.

JSNLog obsługuje poziomy ważności log4net: nazwiska, Debug, Info, Warn, Błąd krytyczny. Dodatkowo możesz użyć poziomów istotności liczbowej, , podając tyle poziomów intensywności, ile chcesz.

Będzie mógł zachować dzienniki do pamięci lokalnej, a następnie po pewnym interwału synchronizacji logi do punktu końcowego serwer

JSNLog pozwala partii konfigurowalną liczbę pozycji dziennika w każdej wiadomości na serwer. Obsługuje także ustawienie maksymalnego czasu, w którym dowolny komunikat znajduje się w buforze przed wysłaniem.

Ponadto dziennik JSNLog umożliwia przechowywanie elementów dziennika o niskim poziomie istotności w pamięci po stronie klienta i wysyłanie ich tylko do serwera, gdy wysyłany jest element dziennika o wysokim priorytecie. Na przykład można rejestrować zdarzenia śledzenia w przypadku wystąpienia wyjątku i wysyłać je tylko na serwer, gdy wystąpi wyjątek i rejestrowane jest zdarzenie krytyczne.

Będzie w stanie obsługiwać formatu JSON i mieć kontrolę nad dzienniku formacie

JSNLog umożliwia zalogowanie obiekty JSON. Jeśli używasz Serilog na serwerze, możesz przechowywać te obiekty jako obiekty, a nie łańcuchy. Ponadto można ustawić obsługę zdarzeń w pliku jsnlog.js, która umożliwia modyfikowanie elementu dziennika wychodzącego.

Byłoby miło mieć kompilacji funkcji rejestrowania jako pracownika internetowej ...

JSNLog nie jest pracownikiem internetowej.

+0

Wow, JSNLog wygląda dokładnie jak to, co nasze potrzeby projektu! Dziękuję Ci! – Graham

1

angular2 Rejestrator prostszy Log4j inspirowany moduł rejestrator kątowego 2.

1) Instalacja modułu npm.

npm zainstalować --save angular2 Rejestrator

2) Dodaj bibliotekę angular2-logger do swojej aplikacji. Jeśli podążasz za kątowej 2 Przewodnik Szybki start powinno być coś takiego:

W systemjs.config.js:

// map tells the System loader where to look for things 
var map = { 
    'app':      'app', // 'dist', 
    '@angular':     'node_modules/@angular', 
    'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api', 
    'rxjs':      'node_modules/rxjs', 
    'angular2-logger':   'node_modules/angular2-logger' // ADD THIS 
}; 

//packages tells the System loader how to load when no filename and/or no extension 
var packages = { 
    'app':      { main: 'main.ts', defaultExtension: 'ts' }, 
    'rxjs':      { defaultExtension: 'js' }, 
    'angular2-in-memory-web-api': { defaultExtension: 'js' }, 
    'angular2-logger':   { defaultExtension: 'js' }, // AND THIS 
}; 

3) Konfiguracja Provider. W app.module.ts:

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { AppComponent } from './app.component'; 
import { Logger } from "angular2-logger/core"; // ADD THIS 

@NgModule({ 
    imports:  [ BrowserModule ], 
    declarations: [ AppComponent ], 
    bootstrap: [ AppComponent ], 
    providers: [ Logger ] // AND THIS 
}) 
export class AppModule { } 

4) wstrzyknąć rejestrator do swoich obiektów i używać go.

@Component({ 
    ... 
}) 
export class AppComponent(){ 
    constructor(private _logger: Logger){ 
     this._logger.error('This is a priority level 1 error message...'); 
     this._logger.warn('This is a priority level 2 warning message...'); 
     this._logger.info('This is a priority level 3 warning message...'); 
     this._logger.debug('This is a priority level 4 debug message...'); 
     this._logger.log('This is a priority level 5 log message...'); 
    } 
} 

Aby zobaczyć wszystkie wiadomości wystarczy zmienić poziom wiadomość rejestrator hierarchii, można to zrobić:

logger.level = logger.Level.LOG; // same as: logger.level = 5; 

lub przy użyciu jednego z predefiniowanych dostawców konfiguracyjnych:

import {LOG_LOGGER_PROVIDERS} from "angular2-logger/core"; 

    @NgModule({ 
     ... 
     providers: [ LOG_LOGGER_PROVIDERS ] 
    }) 
    export class AppModule { } 

dostępne Providers są:

ERROR_LOGGER_PROVIDERS 
    WARN_LOGGER_PROVIDERS 
    INFO_LOGGER_PROVIDERS 
    DEBUG_LOGGER_PROVIDERS 
    LOG_LOGGER_PROVIDERS 
    OFF_LOGGER_PROVIDERS 
+0

Czy program rejestrujący angular-2 obsługuje następujące funkcje: , aby przechowywać dzienniki w pamięci lokalnej, a następnie po określonym czasie synchronizować dzienniki z punktem końcowym serwera? czy muszę to zrobić ręcznie? – edkeveked

+0

Musisz zsynchronizować dzienniki z serwerem ręcznie –

+0

Przeglądam dokumentację [angular-2logger] (https://github.com/code-chunks/angular2-logger) i nie obsługują one czasu rejestrowania dla wiadomości jeszcze. Jak przezwyciężyć tę kwestię w tej chwili? – edkeveked

1

Można użyć NGX-logger

NGX Logger jest prosty moduł logowania dla kątowe (aktualnie obsługuje kątowe 4.3+). Umożliwia to "ładny wydruk" na konsoli, a także umożliwia wysyłanie komunikatów dziennika do adresu URL służącego do rejestrowania po stronie serwera.

Instalacja

npm zainstalować --save NGX-logger

Po zainstalowaniu należy zaimportować nasz główny moduł:

import { LoggerModule, NgxLoggerLevel } from 'ngx-logger'; 

Jedyna pozostała część ma wyświetl zaimportowany moduł w swoim module aplikacji, przekazując konfigurację, aby zainicjować rejestrator.

@NgModule({ 
    declarations: [AppComponent, ...], 
    imports: [LoggerModule.forRoot({serverLoggingUrl: '/api/logs', level: NgxLoggerLevel.DEBUG, serverLogLevel: NgxLoggerLevel.ERROR}), ...], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
} 

Wykorzystanie

Aby korzystać z rejestratora, trzeba będzie importować lokalnie, a następnie wywołać jedną z funkcji rejestrowania

import { Component } from '@angular/core'; 
import { NGXLogger } from 'ngx-logger'; 

@Component({ 
    selector: 'your-component', 
    templateUrl: './your.component.html', 
    styleUrls: ['your.component.less'], 
    providers: [NGXLogger] 
}) 
export class YourComponent { 
    constructor(private logger: NGXLogger) { 
     this.logger.debug('Your log message goes here'); 
     this.logger.debug('Multiple', 'Argument', 'support'); 
    }; 
} 

opcje konfiguracyjne

serverLogLevel - Tylko wysyła dzienniki serwer dla określonego lub wyższego poziomu (OFF wyłącza rejestrator dla serwera) serverLoggingUrl - adresy URL do dzienników POST poziom: Aplikacja zarejestruje tylko komunikat o tym poziomie lub wyższym (WYŁĄCZ wyłącza rejestrator dla klienta) enableDarkTheme: Ustawia domyślny kolor na biały zamiast czarnego TRACE | DEBUG | INFO | LOG | WARN | ERROR | OFF Rejestrowanie po stronie serwera

Jeśli istnieje serwer serverLogginUrl, program NGX Logger spróbuje wysłać komunikat POST na serwer.

Ładowność Przykład {poziom: „DEBUG”, komunikat: „Twoja wiadomość dziennika idzie tu”}

można zapoznać się z dokumentacją, a także za to samo. https://www.npmjs.com/package/ngx-logger

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odniesienia. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. - [Z recenzji] (/ opinia/niskiej jakości-posts/17849976) – Thamaraiselvam

Powiązane problemy