TypeScript ile decorator tanimlayarak methodlari ve siniflari loglamak
typescript, programming, logging, decorator, class, function, method
Last updated
typescript, programming, logging, decorator, class, function, method
Last updated
© 2024 ~ Yunus Emre Ak ~ yEmreAk
function
RaporlamaTypescript'te Python'daki gibi decorator kullanarak bir metodun çağrılmasını ve bitişini otomatik olarak raporlamak için, bir decorator fonksiyonu yazabiliriz. Aşağıda, scheduleClear
metodunun başlangıcını ve bitişini loglayan bir decorator örneği bulunmaktadır. Bu decorator, metod çağrıldığında ve tamamlandığında log mesajları yazacaktır.
Bu decorator, scheduleClear
metodunu sarmalar ve her çağrıldığında log mesajları yazdırır. Eğer metod bir Promise döndürüyorsa, bu Promise'in çözümlenmesi veya reddedilmesine bağlı olarak uygun log mesajlarını yazar. Bu şekilde, her metod çağrısının başlangıç ve bitiş zamanlarını takip edebilirsiniz. Bu örnekte console.log
kullanılmıştır, ancak kendi loglama mekanizmanızı buraya entegre edebilirsiniz.
class
Methodlarini RaporlamaTüm class metotlarına veya programdaki tüm metotlara bir decorator uygulamak için, manuel olarak her metoda decorator eklemek yerine, genel bir yaklaşım kullanabiliriz. Bunun için, class'ların ve metodların dinamik olarak işlenmesi gerekmektedir. Ancak, TypeScript'te bu tür genel decorator kullanımı doğrudan desteklenmez, bu nedenle bazı ekstra adımlar gereklidir.
Aşağıda, tüm sınıfların ve metotların dinamik olarak işlenmesi için bir örnek verilmiştir:
Metot Decorator'u Tanımlama: Her metot çağrısında loglama yapan bir decorator fonksiyonu tanımlayın.
Sınıf Decorator'u Tanımlama: Bu decorator, bir sınıfın tüm metotlarına metod decorator'unu uygular.
Genel Decorator Kullanımı: Tüm sınıflarınıza veya belirli sınıflarınıza sınıf decorator'unu uygulayarak, tüm metodlara otomatik olarak metod decorator'unu uygulayın.
İşte bu adımları gerçekleştiren örnek bir kod:
Bu kod, ApplyLogToMethods
sınıf decorator'ünü kullanarak YourService
sınıfındaki tüm metotlara LogMethodExecution
metod decorator'unu otomatik olarak uygular. Böylece, bu sınıfın herhangi bir metodunun çağrılması, başlangıç ve bitiş loglarını otomatik olarak yazdırır.
Program genelinde uygulamak için, bu yaklaşımı projenizin tüm sınıflarına uygulamanız gerekir. Ancak, bu tür geniş çaplı değişikliklerin performans üzerinde olumsuz etkileri olabileceğini ve kodun okunabilirliğini azaltabileceğini unutmamak önemlidir.