Microsoft.Extensions.Logging.ILogger实现按类名写入不同的日志文件
创始人
2024-11-05 22:37:40
0

使用Microsoft.Extensions.Logging框架可以很方便地实现按类名写入不同的日志文件。你可以通过配置LoggerProvider来实现此功能。下面是一个示例代码,演示如何按类名将日志写入不同的日志文件:

using Microsoft.Extensions.Logging; using System;  public class ClassNameLoggerProvider : ILoggerProvider {     private readonly string logFolderPath; // 日志文件夹路径      public ClassNameLoggerProvider(string folderPath)     {         logFolderPath = folderPath;     }      public ILogger CreateLogger(string categoryName)     {         var className = categoryName.Substring(categoryName.LastIndexOf(".") + 1); // 获取类名         var logger = new ClassNameLogger(className, logFolderPath);         return logger;     }      public void Dispose()     {         // 可以在这里释放资源     } }  public class ClassNameLogger : ILogger {     private readonly string className;     private readonly string logFolderPath;      public ClassNameLogger(string name, string folderPath)     {         className = name;         logFolderPath = folderPath;     }      public IDisposable BeginScope(TState state)     {         return null; // 如果需要支持作用域,请返回一个实现了IDisposable接口的对象     }      public bool IsEnabled(LogLevel logLevel)     {         return true; // 指定日志级别,这里设置为所有级别都输出日志     }      public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter)     {         var message = formatter(state, exception);          // 根据类名创建日志文件名         var logFileName = $"{className}_{DateTime.Now.ToString("yyyyMMdd")}.log";         var logFilePath = System.IO.Path.Combine(logFolderPath, logFileName);          // 将日志写入文件         System.IO.File.AppendAllText(logFilePath, message);     } }

使用时,你可以在Startup类的ConfigureServices方法中注册ILoggerProvider,并指定日志文件夹路径:

public void ConfigureServices(IServiceCollection services) {     // 注册ILoggerProvider     services.AddSingleton(new ClassNameLoggerProvider("日志文件夹路径"));      // 其他服务配置... }

然后,在需要记录日志的类中通过依赖注入方式获取ILogger实例,并使用它进行日志记录:

public class MyClass {     private readonly ILogger logger;      public MyClass(ILogger logger)     {         this.logger = logger;     }      public void DoSomething()     {         logger.LogInformation("Logging message in MyClass");     } }

每个类都将根据其类名创建一个独立的日志文件。请确保设置正确的日志文件夹路径,并根据需要修改文件名格式和日志级别。

相关内容

热门资讯

wpk ai辅助(wePoKe... wpk ai辅助(wePoKe)微扑克专用辅助程序怎么用的啊(透视挂)其实真的有挂(有挂开挂)-知乎...
脚本辅助挂(推扑克)外挂软件透... 脚本辅助挂(推扑克)外挂软件透明软件(透视辅助)一直真的有挂(2020已更新)(知乎)1、推扑克系统...
六分钟教程!德州ai辅助有用(... 六分钟教程!德州ai辅助有用(黑科技辅助挂)外挂透明挂辅助神器(2022已更新)(小红书);德州ai...
黑科技辅助!德扑起手牌胜率图&... 黑科技辅助!德扑起手牌胜率图"wpk德州"其实真的有挂(有挂计算器)-百度1、让任何用户在无需wpk...
透视辅助(WepoKe)外挂辅... 透视辅助(WepoKe)外挂辅助工具(透明挂)其实真的有挂(2021已更新)(哔哩哔哩)1.Wepo...
德扑ai智能机器人(wepOk... 德扑ai智能机器人(wepOke)德州wpk(透明黑科技)就是真的有挂(有挂德州)-百度1、不需要A...
9分钟攻略!wpk透视辅助合作... 9分钟攻略!wpk透视辅助合作(透视)外挂透明挂辅助安装(2023已更新)(微博客户端)1、下载好w...
黑科技辅助挂!微扑克辅助挂&q... 黑科技辅助挂!微扑克辅助挂"wepoke计算辅助"本来真的有挂(有挂机器人)-抖音1、很好的工具软件...
黑科技辅助(wepower德州... 黑科技辅助(wepower德州)外挂软件透明工具(透视辅助)就是真的有挂(2020已更新)(百度知乎...
aapoker挂(WEPOKE... aapoker挂(WEPOKE)aa扑克软件(黑科技)一般真的有挂(有挂后台)-小红书;1、下载好a...