Heim  >  Artikel  >  Backend-Entwicklung  >  So protokollieren Sie Fehler mit „log/slog“

So protokollieren Sie Fehler mit „log/slog“

PHPz
PHPznach vorne
2024-02-06 11:24:03586Durchsuche

So protokollieren Sie Fehler mit „log/slog“

Frageninhalt

Die offizielle Dokumentation zeigt, wie das neue strukturierte Protokollierungspaket verwendet wird, scheint jedoch die Protokollierung von Fehlern auszulassen.

https://pkg.go.dev/log/slog

package main

import (
    "fmt"
    "log/slog"
    "os"
)

func demoFunction() error {
    return fmt.Errorf("oh no: %v", 123)
}

func main() {
    logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
    slog.SetDefault(logger)

    slog.Info("info demo", "count", 3)
    slog.Warn("warn demo", slog.String("somekey", "somevalue"))
    slog.Error("error demo", slog.Int("someintkey", 123))
    err := demoFunction()
    if err != nil {
        // Here I'm logging the error as a string, but I presume there is a better way
        // possibly that will log stack trace info as well.
        slog.Error("the demo function got an error.", slog.String("error", err.Error()))
    }
}

Richtige Antwort


Jemand hat einen Vorschlag gemacht und schloss ihn ab. Ich denke, es ist am Ende unnötiger syntaktischer Zucker.

Es scheint, dass jemand beschlossen hat, den Slog zu beenden. Jeder Anruf

func ErrAttr(err error) slog.Attr {
    return slog.Any("error", err)
}

Das obige ist der detaillierte Inhalt vonSo protokollieren Sie Fehler mit „log/slog“. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen