3

是否可以让 ngx-logger 使用不同的对象进行记录?目前所有的日志都是基于下面的NGXLogInterface:

export class NGXLogInterface {
  level: NgxLoggerLevel;
  timestamp: string;
  fileName: string;
  lineNumber: string;
  message: string;
  additional: any[];
}

但是,我需要将我的日志发送到一个 API,该 API 需要如下所示的主体:

{
  "application": "string",
  "component": "string",
  "area": "string",
  "level": "string",
  "details": "string",
  "executingUser": "string",
}
4

1 回答 1

0

// 这个负责发送请求的服务是 NGXLoggerHttpService 所以你必须提供另一个来改变模型的签名。

1 - 在您实例化 LoggerModule ==> LoggerModule.forRoot() 的同一模块中添加覆盖服务 ....

2 - 通过扩展原始服务并覆盖 logOnServer 方法来编写负责发送请求的新服务

providers: [
  {provide: NGXLoggerHttpService, useClass: MyLoggerHttpService, multi: false}
]

@Injectable()
export class MyLoggerHttpService extends NGXLoggerHttpService {
  public constructor(private readonly _http: HttpBackend) {
    super(_http);
  }
  public logOnServer(url: string, log: NGXLogInterface, options: object): Observable<any> {
    const value: any = JSON.parse(log.message);
    return super.logOnServer(url, value as any, options );
  }

}
于 2021-02-19T00:42:17.277 回答