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())) } }
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!