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.
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
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.
O JSNLog não trabalha na web.Seria bom ter a função de Registo construída como um web-worker ...
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