İçeriğe geç

Logla ve Döndür Tekrarı (ARCH5166)

Anahtar go.logging.log-and-return-error · Önem warning · Kategori logging

Bir hatayı loglayıp aynı handler içinde tekrar döndürmek, hata çağrı yığınında yukarı çıkarken yeniden loglanacağı için yinelenen log satırlarına yol açar. Hata ya loglanmalı ya da sarmalanarak döndürülmelidir, ikisi birden değil.

func fetch(log *slog.Logger, id string) (*Doc, error) {
d, err := repo.Get(id)
if err != nil {
log.Error("fetch failed", "err", err)
return nil, err
}
return d, nil
}
func fetch(id string) (*Doc, error) {
d, err := repo.Get(id)
if err != nil {
return nil, fmt.Errorf("fetch %s: %w", id, err)
}
return d, nil
}

Hatayı sarmalayarak döndürün ve loglamayı yalnızca en üst sınır katmanında bir kez yapın.