DEV Community

MustafaSamedYeyin
MustafaSamedYeyin

Posted on

3 2

Asp.net core Logging LoggerFactory class'ı Giriş.

LoggerFactory class'ı ne işe yarar ?

LoggerFactory class'ı asp.net core projemizde yeni bir ILogger instance'ı üretmemize olanak sağlar.

Örnek :

1.) Logger adlı bir klasör oluşturun ve içerisine Logger ve LoggerFileProvide adlı iki tane class oluşturun :

alt text

2.) Logger class'ımızı ILogger adlı interface'den türetin ve içine şu kodları yapıştırın :

        public string Path { get; set; }
        public Logger(string FullPath)
        {
            Path = FullPath;
        }
        public IDisposable BeginScope<TState>(TState state)
        {
            return null;
        }

        public bool IsEnabled(LogLevel logLevel)
        {
            return true;
        }

        public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
        {
            File.AppendAllText($"{Path}",$"LogLevel: { logLevel } | EventId: { eventId }|  TState : { state } | Exception : { exception } | Formatter : { formatter } + Datetime :  {DateTime.Now} "+ Environment.NewLine + Environment.NewLine);

        }

Enter fullscreen mode Exit fullscreen mode

3.) LoggerFileProvide class'ımızı "ILoggerProvider" adlı interfaceden türetin ve içine aşağıdaki kodları yapıştırın :

        public string Path { get; set; }
        public LoggerFileProvider(string FullPath)
        {
            Path = FullPath;
        }
        public ILogger CreateLogger(string categoryName)
        {
             return new Logger(Path);
        }

        public void Dispose()
        {
            throw new NotImplementedException();
        }
Enter fullscreen mode Exit fullscreen mode

4.) HomeController.cs ye gidelim ve ILogger tipinden yeni bir field oluşturalım örneğin aşağıdaki gibi :

private readonly ILogger _logger2;

Enter fullscreen mode Exit fullscreen mode

5.) HomeController.cs controllerının constructor'ına aşağıdaki kodları yapıştıralım :

 _logger2 = LoggerFactory.Create(configure =>
              {
                  configure.AddProvider(new LoggerFileProvider("C:\\Loglama\\Logging.txt"));
              }).CreateLogger("Bu farklı bir logger.");
Enter fullscreen mode Exit fullscreen mode

6.) HomeController.cs dosyasının içerisindeki Index action'ın içine aşağıdaki kodları yapıştıralım :

            _logger.LogInformation("Bu bir mesajdır ve console yazılacaktır.");
            _logger2.LogInformation("Bu bir mesajdır ve C:\\Loglama\\Logging.txt yoluna yazılacaktır.");
Enter fullscreen mode Exit fullscreen mode

7.) Son hali olarak dosyalarımız aşağıdakine benzer gözükmelidir, teyit amaçlı fotoğlarını koyuyorum :

Logger.cs :

alt text

LoggerFileProvide.cs :

alt text

HomeController.cs :

alt text

8.) "C:\" dizinine "Loglama" adlı klasör yaratalım. "Loglama" adlı klasör'ün içerisine "Logging.txt" adlı txt dosyasını yaratalım.

Dikkat ederseniz bu parametreyi "C:\Loglama\Logging.txt" HomeController'ın constructor'ında verdik tekrar amaçlı buraya kodu bırakıyorum :

 _logger2 = LoggerFactory.Create(configure =>
              {
                  configure.AddProvider(new LoggerFileProvider("C:\\Loglama\\Logging.txt")); // burada hangi dosyaya loglama yapacağını bildiriyoruz.
              }).CreateLogger("Bu farklı bir logger.");
Enter fullscreen mode Exit fullscreen mode

9.) Projen dosyasının üstüne sağ tıklayıp "Open in Terminal" diyelim :

alt text

10.) Çıkan terminale "dotnet run" yazalım.

11.) Ve tarayıcımızı açıp aşağıdaki linke gidelim :

https://localhost:5001
Enter fullscreen mode Exit fullscreen mode

Burası bizi Home/Index yönlendirecektir.

12.) Sayfamız yüklendikten sonra terminale bakalım :

info: LogFabrikası.Controllers.HomeController[0]
      Bu bir mesajdır ve console yazılacaktır.
Enter fullscreen mode Exit fullscreen mode

yazacaktır.

13.) Şimdi ise : "C:\Loglama\Logging.txt" yolundaki dosyaya açalım. Aşağıdaki gibi bir mesajı olan Loglama işlemi gerçeleşmiş olması gerekir.

LogLevel: Information | EventId: 0|  TState : Bu bir mesajdır ve C:\Loglama\Logging.txt yoluna yazılacaktır. | Exception :  | Formatter : System.Func`3[Microsoft.Extensions.Logging.FormattedLogValues,System.Exception,System.String] + Datetime :  10.10.2021 19:30:42 


Enter fullscreen mode Exit fullscreen mode

alt text

Sizde zaman vs.. farklı olabilir ama önemli olan 6. adımda yapmış olduğumuz _logger2.LogInformatin(...) metodumuzun içerisindeki yazıyı yazdırmasıdır.

Sonuç :

LoggerFactory class'ı ile yeni Logger'lar oluşturabilirsiniz.

Bir dahaki yazımda görüşmek dileğiyle.

En iyi dileklerim ile.

Mustafa Samed Yeyin.

https://www.dotnettr.com/

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (0)