Registo Angular2 [fechado]

estou a tentar introduzir o registo para um angular2 app e quer verificar todas as boas bibliotecas ou abordagens que você poderia recomendar sobre isso.

os requisitos para o registo são:

  • terá opções para configurar o registo como info, warn, error, debug e verbose.
  • será capaz de manter os registos no armazenamento local e depois de um certo intervalo sincronizar os registos para um ponto final do servidor
  • será capaz de suportar o formato Json e ter controlo sobre o formato log

a exigência abaixo seria boa. ter e ter qualquer experiência em trabalhar com web worker que você pode compartilhar seria apreciado.

  • seria bom ter a função de Registo construída como um web-worker tão longe do fio do navegador e poderíamos potencialmente usar a cache de aplicativos como armazenamento temporário?

qualquer conselho sobre isto seria muito apreciado.

Author: Marcus, 2016-07-20

3 answers

Pode utilizar ngx-logger

O NGX Logger é um módulo de registo simples para o angular (suporta actualmente o angular 4.3+). Ele permite que "pretty print" para o console, bem como permitir que as mensagens de log sejam postadas em um URL para o registro do lado do servidor.

Instalação

Npm install --save ngx-logger

Uma vez instalado, terá de importar o nosso módulo principal:

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

A única parte restante é listar o módulo importado no seu módulo de aplicação, passando por uma configuração para intializar o logger.

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

Utilização

Para usar o Logger, terá de o Importar localmente, e depois ligar para uma das funções de Registo

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');
    };
}

Opções De Configuração

O ServerLogLevel-apenas envia os registos para o servidor para o nível indicado ou superior (desliga o logger para o servidor) serverloggurl-URL para postar os registos nível: a aplicação só irá registar a mensagem para esse nível ou superior (desligar o registo para a cliente) enableDarkTheme: define a cor por omissão em branco em vez de preto TRACE|DEBUG / INFO|LOG|WARN / ERROR / OFF Registo Do Lado Do Servidor

Se o serverLogginUrl existir, o NGX Logger irá tentar enviar esse registo para o servidor.

Payload Example {level: 'DEBUG', message: 'Your log message goes here'}

Você pode ler a documentação também para o mesmo. https://www.npmjs.com/package/ngx-logger

 7
Author: PKSA, 2017-11-06 17:56:04

Acho que O JSNLog corresponde parcialmente às tuas necessidades (sou o autor do JSNLog).

O JSNLog consiste numa biblioteca do lado do cliente, o jsnlog.js e um componente do lado do servidor. A biblioteca do lado cliente envia itens de log para o componente do lado servidor em pedidos AJAX. Uma vez no servidor, os itens de log são armazenados no seu log do lado do servidor. A .Net 4.x version usa Common.Logging, para suportar log4net, NLog, Elmah e serilog logs. A versão do Core. Net suporta o registo do Core quadro.

Correspondência das características JSNLog com as suas necessidades:

Terá opções para configurar o registo como informação, aviso, erro, depuração e verboso.

O JSNLog suporta os níveis de gravidade do Log4Net: Trace, Debug, Info, Warn, Erro, Fatal. Além disso, você pode usar níveis de gravidade numérica, dando-te os níveis de gravidade que quiseres.

Será capaz de manter registos no local de armazenamento e depois de um certo intervalo sincronizar os registos a ponto final do servidor

O JSNLog permite-lhe enviar para o servidor um número configurável de itens de registo em cada mensagem. Ele também suporta definir um tempo máximo que qualquer mensagem fica no buffer antes de ser enviado.

Além disso, o JSNLog permite-lhe armazenar itens de registo de baixa gravidade na memória do lado do cliente, e apenas enviá-los para o servidor quando um item de registo de alta gravidade é enviado. Por exemplo, você pode registrar eventos de rastreamento no caso de uma exceção acontecer, e apenas enviá-los para o servidor quando uma exceção acontece e regista um evento Fatal.

Será capaz de suportar o formato Json e ter controle sobre o log formato

O JSNLog permite-lhe registar os objectos JSON. Se você usar o Serilog no servidor, você pode armazenar esses objetos como objetos em vez de strings. Além disso, você pode definir um responsável por eventos no jsnlog.js que lhe permite modificar o item de registo de saída.

Seria bom ter a função de Registo construída como um web-worker ...

O JSNLog não trabalha na web.
 1
Author: user1147862, 2017-06-13 06:11:07

Angular2-logger Um módulo de log4j mais simples inspirou logger para o Angular 2.

1) Instalar o módulo npm.

Npm install --save angular2-logger

2) Adicione a biblioteca angular2-logger à sua aplicação. Se você está seguindo o Guia de arranque Angular 2 deve ser algo assim:

Em systemjs.configuracao.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) Configurar o fornecedor. Na app.modulo.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) Injecte o logger nos seus objectos e use ele.

@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...');
    }
 }

A fim de ver todas as mensagens que você só precisa para mudar o nível de Hierarquia de mensagens logger, você pode fazê-lo:

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

Ou usando um dos fornecedores de configuração predefinidos:

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

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

Os fornecedores disponíveis são:

  ERROR_LOGGER_PROVIDERS
  WARN_LOGGER_PROVIDERS
  INFO_LOGGER_PROVIDERS
  DEBUG_LOGGER_PROVIDERS
  LOG_LOGGER_PROVIDERS
  OFF_LOGGER_PROVIDERS
 1
Author: mahdi kallel, 2017-06-18 16:18:50