角度客户端错误记录到服务器

问题描述 投票:1回答:2

我想记录到客户端角度错误到服务器,所以我遵循thisthis stackoverflow答案并实现了一个服务,使一个http呼叫服务器。目前,logError方法受到了攻击,但是没有对服务器进行http调用。

export class AngularLoggerService {
constructor(private http: HttpClient) {}

logError(error: Error) {
   console.log(error.stack); // line is printed to console
   this.http.post('/angular/log', {
     message: error.stack
   });
 }
}

Stackblitz Link

Image

angular
2个回答
2
投票

this.http.post返回一个observable,除非你在observable中使用.subscribe方法,服务器调用不会改变你的代码如下

export class AngularLoggerService {
constructor(private http: HttpClient) {}

    logError(error: Error) {
       console.log(error.stack); // line is printed to console
       this.http.post('/angular/log', {
         message: error.stack
       }).subscribe((res) => console.log(res));
     }
    }

0
投票

您需要将post方法中的baseUrl(服务器URL)和subscribe传递给Observable,以便成功获取有关错误日志的响应。这是一个解决方案。

service.ts

import { Injectable, isDevMode } from '@angular/core';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class AngularLoggerService {

  baseUrl = "https://yourserver.com"
  constructor(private http: HttpClient) {}

  logError(error: Error) {
    console.log(error.stack);
    this.http.post(this.baseUrl +'/angular/log', {
      message: error.stack
    }).subscribe( (response) => {
      console.log(response);
    });
  }
}

Here is Forked Stackblitz solution

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.