2016-04-10 22 views
0

Yeni işlevinde *log.Logger (stdlib Logger) parametresini kabul eden bir üçüncü taraf kitaplığı kullanıyoruz, ancak biz Logger kendimiz uygularız. Stdlib Logger ile aynı "arayüze" sahiptir.Golang Logger polimorfizmi?

arayüz parametre türünü değiştirmek için kütüphane sahibini soran hariç üçüncü kütüphaneye Logger kendi uygulamasını geçmesine herhangi kesmek yolu var mı?

cevap

1

kendi paket gerçek * log.Logger sürerse, hiçbir şey yok Bir log.Logger çıktısını, kendi günlük deyimlerini kesiştirdiğiniz özel bir yazara ayarlamak dışında kendi logger'ınızı enjekte edebilirsiniz.

Ancak bu, tüm günlük deyimlerini yalnızca yeniden oturum açabilmeniz için ayrıştıracağınız alt harika olacak. Log.Logger, Yazma'ya bir çağrı olarak bir günlük mesajı yazıp yazmadığından emin değil. eğer yaparsa, yazdığınız her çağrı için tekrar yazmanız yeterlidir.

Ayrıca başka bir kitaplık bulmayı veya gerçekten kitaplığa bağlı hiçbir şey olmadığından bu kitaplığı değiştirmeyi ve değiştirmeyi düşünebilirsiniz.Yakın böyle.