I am working in Angular 8 & Asp.net WebApi 2. Angular i am calling logger in ErrorHandlerService
import { ErrorHandler, Injectable, Injector } from '@angular/core';
import { AppConfigService } from '@core/app-config/app.config.service';
import { NGXLogger } from 'ngx-logger';
@Injectable()
export class ErrorHandlerService implements ErrorHandler {
constructor(private injector: Injector, private logger: NGXLogger) {
}
handleError(error: any): void {
this.logger.error(error);
}
}
// Registering in App module -->
LoggerModule.forRoot({serverLoggingUrl: '/api/loggs/client', level: NgxLoggerLevel.DEBUG, serverLogLevel: NgxLoggerLevel.DEBUG}),
],
providers: [
{ provide: ErrorHandler, useClass: ErrorHandlerService }
],
\\ Server side coding :
public class LogPayload
{
public LogLevelEnum Level { get; set; }
public double Timestamp { get; set; }
public string FileName { get; set; }
public string LineNumber { get; set; }
public string Message { get; set; }
}
[Route("api/loggs/client")]
[HttpPost]
public void LogClient(LogPayload log)
{
_Service.RegisterLog(log);
}
public void RegisterLog(LogPayload log)
{
// read log details
log file deatils:
log.FileName :main.js
log.Level = Error
log.LineNumber = 18494
log.Message ="Http failure response"
}
Not sure how to get component name instead of main.js with line number from Angular component? and also Timestamp always return 0. Do we have to use export class NGXLogInterface { level: NgxLoggerLevel; timestamp: string; fileName: string; lineNumber: string; message: string; additional: any[]; } in Angular to pass each items in post request? There is no much documentation for server logging. Any help would be great.
You need to specify components by own or create generic methods. because when logs generate it create.js file.
Change Property of TimeStamp to string. then you can parse it to Datetime.
[HttpPost] public IActionResult Post([FromBody] LogDto dto) { var msg = $"MESSAGE: {dto.Message} - " + $"FILE: {dto.FileName} - " + $"LEVEL: {dto.Level} - " + $"LINENUMBER: {dto.LineNumber} - " + $"TIMESTAMP: {dto.Timestamp}" + _logger.LogError(msg); return Ok(); }
You need to set enableSourceMaps
to true in logger config
Be careful, for this to work you need to generate source maps when building
More info in the doc: https://github.com/dbfannin/ngx-logger/blob/master/docs/features.md
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.