簡體   English   中英

NGX Logger Server-Side Logging in Angular 8 + Asp.net WEB API 2 allways return Timestamp:0, FileName = main.js & LineNumber from main.js

[英]NGX Logger Server-Side Logging in Angular 8 + Asp.net WEB API 2 allways return Timestamp:0, FileName = main.js & LineNumber from main.js

我在 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" 

             }

不確定如何從 Angular 組件獲取組件名稱而不是 main.js 行號? 而且 Timestamp 總是返回 0。我們是否必須使用 export class NGXLogInterface { level: NgxLoggerLevel; 時間戳:字符串; 文件名:字符串; 行號:字符串; 消息:字符串; 附加:任何[]; 在 Angular 中傳遞 post 請求中的每個項目? 沒有太多關於服務器日志的文檔。 任何幫助都會很棒。

您需要自己指定組件或創建通用方法。 因為當日志生成它時 create.js 文件。

將 TimeStamp 的屬性更改為字符串。 然后您可以將其解析為日期時間。

 [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(); }

您需要在記錄器配置中將enableSourceMaps設置為 true

請注意,要使其正常工作,您需要在構建時生成源映射

文檔中的更多信息: https://github.com/dbfannin/ngx-logger/blob/master/docs/features.md

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM