.Net Core Microservice Log Yapısı

Tüm geliştirdiğiniz uygulamalarda olduğu gibi microservice mimarisinde de loglama önemli bir yere sahiptir. Bu tür yapılarda client’ dan gelen request’ in nerelerden ne şartlarda (fail, success, timeout v.s.) geçtiği önem taşımaktadır. Bunun yanında servisler arasındaki iletişimin veya request’ lerin gözlemlenmesi gerekmektedir.

Daha önceki makalelerimizde kodladığımız microservice yapısına basit bir log mekanizması implement edelim. Öncelikle client tarafından gelen tüm request’ lerin geçtiği api gateway üzerinde küçük bir değişiklikle başlayalım.

appsettings.json dosyasına aşağıdaki kod blogunu ekleyelim.(Api gateway ayağa kalkarken bu configi okuyacak.)

Uygulamamızın startup.cs dosyasını açalım ve aşağıdaki kodu ekleyelim.

Evet LoggerFactory kullanarak uygulama loglarını console’a basıyoruz. Örnek bir request’in logları aşağıdaki gibidir.

Microsoft Nuget üzerinden NLog.Web.AspNetCore kütüphanesini kurarak uygulama loglarını bir dosyaya kaydedebiliriz. Bunun için uygulama ana dizinine nlog.config dosyası oluşturarak aşağıdaki config’i ekleyelim.

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogLevel="Warn"
internalLogFile="internal-nlog.txt">
<targets>
<target xsi:type="File"
name="debug"
fileName="debug-${shortdate}.log"
layout="${longdate}|${event-properties:item=EventId.Id}|${uppercase:${level}}|${logger}|${message} ${exception}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="debug" />
</rules>
</nlog>

Startup.cs dosyamızda bir değişiklik daha yaparak NLog’u devreye alıyoruz.

Evet debug klasörü altında oluşan debug-2019–07–28.log dosyamızın içine göz attığımızda uygulama loglarını görebiliyoruz.

Faydalı olması dileğiyle. Hoşçakalın.

Repo:

--

--