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");     } }

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

相关内容

热门资讯

2026版方法!火神微信辅助(... 2026版方法!火神微信辅助(辅助)其实是真的有辅助神器(有挂规律)1、点击下载安装,火神微信辅助脚...
操作辅助!奇迹陕西靖边锅子有没... 操作辅助!奇迹陕西靖边锅子有没有技巧!曝光真的有辅助挂(有挂教学)进入游戏-大厅左侧-新手福利-激活...
黑科技辅助挂!威信茶馆跑辅助器... 黑科技辅助挂!威信茶馆跑辅助器(辅助)果然确实有辅助app(真实有挂)1、在威信茶馆跑辅助器插件功能...
要领辅助!好友赣南插件!了解是... 要领辅助!好友赣南插件!了解是有辅助器(证实有挂)1)好友赣南插件免费钻石:进一步探索好友赣南插件免...
随着!决战平安京辅助软件(辅助... 随着!决战平安京辅助软件(辅助)切实存在有辅助挂(有挂透视)1、打开软件启动之后找到中间准星的标志长...
手册辅助!哈灵脚本修改器!解迷... 手册辅助!哈灵脚本修改器!解迷存在有辅助工具(有挂方法)运哈灵脚本修改器辅助工具,进入游戏界面。进入...
此事迅速冲上热搜!微信小程序财... 此事迅速冲上热搜!微信小程序财神十三张辅助(辅助)切实真的是有辅助挂(有挂教程)1、下载好微信小程序...
指引辅助!快玩炸翻天辅助工具!... 指引辅助!快玩炸翻天辅助工具!辅助是真的有辅助软件(真的有挂)在进入快玩炸翻天辅助工具软件靠谱后,参...
方法辅助挂!雀神广东麻将推倒胡... 方法辅助挂!雀神广东麻将推倒胡辅助器下载(辅助)真是真的是有辅助app(果真有挂)1、该软件可以轻松...
方案辅助!广西友玩修改器!普及... 方案辅助!广西友玩修改器!普及真的是有辅助技巧(真的有挂)广西友玩修改器透视方法中分为三种模型:广西...