DEV Community

MustafaSamedYeyin
MustafaSamedYeyin

Posted on • Edited on

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/

Top comments (0)