fontcolor_theme
Deepkit App

Logger

Deepkit Logger ist eine eigenständige Bibliothek mit einer primären Logger Class, die du zum Protokollieren verwenden kannst. Diese Class ist im Dependency Injection-Container deiner Deepkit-Anwendung automatisch verfügbar.

Die Logger Class hat mehrere Methods, die sich jeweils wie console.log verhalten.

logger.error()Error1
logger.warning()Warning2
logger.log()Standard-Log3
logger.info()Spezielle Informationen4
logger.debug()Debug-Informationen5

Standardmäßig hat ein Logger Level info, d. h. er verarbeitet nur info-Nachrichten und höher (d. h. log, warning, error, aber nicht debug). Um das Log Level zu ändern, rufe z. B. logger.level = 5 auf.

Verwendung in der Anwendung

Um den Logger in deiner Deepkit-Anwendung zu verwenden, kannst du Logger einfach in deine Services oder Controller injecten.

import { Logger } from '@deepkit/logger';
import { App } from '@deepkit/app';

const app = new App();
app.command('test', (logger: Logger) => {
    logger.log('This is a <yellow>log message</yellow>');
});

app.run();

Farben

Der Logger unterstützt farbige Log-Nachrichten. Du kannst Farben bereitstellen, indem du XML-Tags verwendest, die den Text umschließen, der farbig erscheinen soll.

const username = 'Peter';
logger.log(`Hi <green>${username}</green>`);

Für Transporter, die keine Farben unterstützen, wird die Farbinformation automatisch entfernt. Im Standard-Transporter (ConsoleTransport) wird die Farbe angezeigt. Folgende Farben sind verfügbar: black, red, green, blue, cyan, magenta, white und grey/gray.

Transporter

Du kannst einen einzelnen Transporter oder mehrere Transporter konfigurieren. In einer Deepkit-Anwendung ist der ConsoleTransport-Transporter automatisch konfiguriert. Um zusätzliche Transporter zu konfigurieren, kannst du Setup-Aufrufe verwenden:

import { Logger, LoggerTransport } from '@deepkit/logger';

export class MyTransport implements LoggerTransport {
    write(message: string, level: LoggerLevel, rawMessage: string) {
        process.stdout.write(JSON.stringify({message: rawMessage, level, time: new Date}) + '\n');
    }

    supportsColor() {
        return false;
    }
}

new App()
    .setup((module, config) => {
        module.configureProvider<Logger>(v => v.addTransport(new MyTransport));
    })
    .run();

Um alle Transporter durch einen neuen Satz von Transportern zu ersetzen, verwende setTransport:

import { Logger } from '@deepkit/logger';

new App()
.setup((module, config) => {
    module.configureProvider<Logger>(v => v.setTransport([new MyTransport]));
})
.run();
import { Logger, JSONTransport } from '@deepkit/logger';

new App()
    .setup((module, config) => {
        module.configureProvider<Logger>(v => v.setTransport([new JSONTransport]));
    })
    .run();

Scoped Logger

Scoped Logger fügen jedem Log-Eintrag einen beliebigen Bereichsnamen hinzu, was dabei helfen kann festzustellen, aus welchem Teilbereich deiner Anwendung der Log-Eintrag stammt.

const scopedLogger = logger.scoped('database');
scopedLogger.log('Query', query);

Es gibt auch einen ScopedLogger Type, den du verwenden kannst, um Scoped Logger in deine Services zu injecten.

import { ScopedLogger } from '@deepkit/logger';

class MyService {
    constructor(protected logger: ScopedLogger) {}
    doSomething() {
        this.logger.log('This is wild');
    }
}

Alle Nachrichten eines Scoped Loggers werden nun mit dem Scope-Namen MyService vorangestellt.

Formatter

Mit Formattern kannst du das Nachrichtenformat ändern, z. B. den Zeitstempel hinzufügen. Wenn eine Anwendung über server:start gestartet wird, wird automatisch ein DefaultFormatter hinzugefügt (der Zeitstempel, Bereich und Log Level hinzufügt), wenn kein anderer Formatter verfügbar ist.

Kontextdaten

Um Kontextdaten zu einem Log-Eintrag hinzuzufügen, füge als letztes Argument ein einfaches Objektliteral hinzu. Nur Log-Aufrufe mit mindestens zwei Argumenten können Kontextdaten enthalten.

const query = 'SELECT *';
const user = new User;
logger.log('Query', {query, user}); //letztes Argument sind Kontextdaten
logger.log('Another', 'wild log entry', query, {user}); //letztes Argument sind Kontextdaten

logger.log({query, user}); //dies wird nicht als Kontextdaten behandelt.
English中文 (Chinese)한국어 (Korean)日本語 (Japanese)Deutsch (German)