提问人:Jim Lobo 提问时间:6/15/2020 更新时间:6/7/2022 访问量:3830
Angular 8 中的 NGX 记录器服务器端日志记录 + Asp.net WEB API 2 从main.js全部返回 Timestamp:0, FileName = main.js & LineNumber
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 。我们是否必须使用导出类 NGXLogInterface { 级别:NgxLoggerLevel; 时间戳:字符串; 文件名:字符串; lineNumber:字符串; 消息:字符串; 附加:any[]; } 在 Angular 中传递 post 请求中的每个项目?没有太多关于服务器日志记录的文档 . 任何帮助都会很棒.
答:
0赞
Basit Jamil
11/6/2020
#1
您需要自己指定组件或创建泛型方法。因为当日志生成它时,会创建.js文件。
将 TimeStamp 的属性更改为 string。 然后你可以将其解析为 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();
}
1赞
bmtheo
6/7/2022
#2
您需要在记录器配置中设置为 trueenableSourceMaps
请注意,要做到这一点,您需要在构建时生成源映射
文档中的更多信息:https://github.com/dbfannin/ngx-logger/blob/master/docs/features.md
评论