Schreiben Sie den console.log-Wrapper für Angular 2 in TypeScript

Shuvayan Ghosh Dastidar 15 Februar 2024
Schreiben Sie den console.log-Wrapper für Angular 2 in TypeScript

Die Protokollierung ist für Anwendungen sehr wichtig, was beim Debuggen hilft und Anwendungsprobleme in der Produktion erkennt. Angular dreht sich alles um Dienste und kann in andere Komponenten injiziert werden, sodass ein Protokollierungsdienst erstellt werden kann, der als Wrapper für die Funktion console.log fungiert.

Der Protokollierungsdienst kann auf weitere Aktionen mit Protokollen erweitert werden, z. B. das Senden an einen Remote-Server für Analysen oder eine Datenbank. Dieses Tutorial zeigt, wie Dienste in Angular verwendet werden können, um einen Wrapper für die Funktion console.log in TypeScript zu erstellen.

Schreiben Sie console.log Wrapper für Angular 2 in TypeScript

Da Angular aus Diensten besteht, kann man einen neuen Logging-Dienst erstellen. Dieser Service kann später für weitere Anwendungsfälle wie Analytics und Observability erweitert werden.

services/log.service.ts

import { Injectable } from '@angular/core';

@Injectable()
export class CustomLogService {
    log(msg: string) {
        console.log(new Date() + ": " + msg);
    }
}

Somit fungiert CustomLogService als Wrapper um console.log und kann in anderen Angular-Komponenten verwendet werden. Zum Einfügen der Klasse CustomLogService können wir eine Komponente definieren, die eine HTML-Datei verwenden kann.

tests/log.component.html

<button (click)="wrapLog()">Log</button>

tests/log.component.ts

import { Component } from "@angular/core";
import { CustomLogService } from "../services/log.service";

@Component({
  selector: "log-comp",
  templateUrl: "./log.component.html"
})
export class LogComponent {
  constructor(private logger: CustomLogService) {}

  wrapLog(): void {
    this.logger.log("A custom log method");
  }
}

Ein weiteres app.module.ts muss definiert werden.

app.module.ts

import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";

import { AppComponent } from "./app.component";
import { CustomLogService } from "./services/log.service";
import { LogComponent } from "./tests/log.component";

@NgModule({
  imports: [BrowserModule],
  declarations: [AppComponent, LogComponent],
  bootstrap: [AppComponent, LogComponent],
  providers: [CustomLogService]
})
export class AppModule {}

Jetzt kann der in tests/log.component.ts definierte Selektor log-comp als <log-comp></log-comp> verwendet werden, um eine HTML-Schaltfläche anzuzeigen, die sich beim Klicken an der Konsole anmeldet - Eine benutzerdefinierte Protokollmethode, wie in tests/log.component.ts definiert.

Ausgang:

Schreibmaschinenschrift auf Konsole drucken

Hier ist die Demo für den vollständigen Quellcode.

Shuvayan Ghosh Dastidar avatar Shuvayan Ghosh Dastidar avatar

Shuvayan is a professional software developer with an avid interest in all kinds of technology and programming languages. He loves all kinds of problem solving and writing about his experiences.

LinkedIn Website