[英]NGX Logger Server-Side Logging in Angular 8 + Asp.net WEB API 2 allways return Timestamp:0, FileName = main.js & LineNumber from main.js
I am working in Angular 8 & Asp.net WebApi 2. Angular i am calling logger in ErrorHandlerService我在 Angular 8 & Asp.net WebApi 2 工作。Angular 我在 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?不确定如何从 Angular 组件获取组件名称而不是 main.js 行号? and also Timestamp always return 0. Do we have to use export class NGXLogInterface { level: NgxLoggerLevel;
而且 Timestamp 总是返回 0。我们是否必须使用 export class NGXLogInterface { level: NgxLoggerLevel; timestamp: string;
时间戳:字符串; fileName: string;
文件名:字符串; lineNumber: string;
行号:字符串; message: string;
消息:字符串; additional: any[];
附加:任何[]; } in Angular to pass each items in post request?
在 Angular 中传递 post 请求中的每个项目? 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.
因为当日志生成它时 create.js 文件。
Change Property of TimeStamp to string.将 TimeStamp 的属性更改为字符串。 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您需要在记录器配置中将
enableSourceMaps
设置为 true
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文档中的更多信息: https://github.com/dbfannin/ngx-logger/blob/master/docs/features.md
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.