赞
踩
使用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>(TState state)
- {
- return null; // 如果需要支持作用域,请返回一个实现了IDisposable接口的对象
- }
-
- public bool IsEnabled(LogLevel logLevel)
- {
- return true; // 指定日志级别,这里设置为所有级别都输出日志
- }
-
- public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> 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<ILoggerProvider>(new ClassNameLoggerProvider("日志文件夹路径"));
-
- // 其他服务配置...
- }
然后,在需要记录日志的类中通过依赖注入方式获取ILogger实例,并使用它进行日志记录:
- public class MyClass
- {
- private readonly ILogger<MyClass> logger;
-
- public MyClass(ILogger<MyClass> logger)
- {
- this.logger = logger;
- }
-
- public void DoSomething()
- {
- logger.LogInformation("Logging message in MyClass");
- }
- }
每个类都将根据其类名创建一个独立的日志文件。请确保设置正确的日志文件夹路径,并根据需要修改文件名格式和日志级别。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。