Microsoft.Extensions.Logging.ILogger实现按类名写入不同的日志文件

这篇具有很好参考价值的文章主要介绍了Microsoft.Extensions.Logging.ILogger实现按类名写入不同的日志文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

每个类都将根据其类名创建一个独立的日志文件。请确保设置正确的日志文件夹路径,并根据需要修改文件名格式和日志级别。文章来源地址https://www.toymoban.com/news/detail-760526.html

到了这里,关于Microsoft.Extensions.Logging.ILogger实现按类名写入不同的日志文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决Git项目在IDEA中类名爆红,不同颜色类名在IDEA中含义

    绿色,已经加入控制暂未提交 红色,未加入版本控制 蓝色,加入,已提交,有改动 白色,加入,已提交,无改动 灰色:版本控制已忽略文件。 选中该类后,右击,选择Git ----Add,就可以转换为蓝色,再次push就可以了。 也可以选中类名后,直接使用快捷键Ctrl+Alt+A。 这样问

    2024年02月06日
    浏览(28)
  • .NET服务发现(Microsoft.Extensions.ServiceDiscovery)集成Consul

    随着Aspire发布preview5的发布,Microsoft.Extensions.ServiceDiscovery随之更新, 服务注册发现这个属于老掉牙的话题解决什么问题就不赘述了,这里主要讲讲Microsoft.Extensions.ServiceDiscovery(preview5)以及如何扩展其他的中间件的发现集成 . Microsoft.Extensions.ServiceDiscovery官方默认提供的Config,DNS,YAR

    2024年04月11日
    浏览(37)
  • 在.NetFramework中使用Microsoft.Extensions.Configuration 读取Json和XML

    //需要安装 Microsoft.Extensions.Configuration; //Microsoft.Extensions.Configuration.json //Microsoft.Extensions.Configuration.xml //Microsoft.Extensions.Configuration.Binder; //注意: json 的key中不能出现冒号\\\":\\\" //XML的 Atrribute中不能出现 “Name”, 且不能使用根节点(从第一个子节点开始) 实体类: XML: Json:

    2024年02月11日
    浏览(29)
  • 聊一聊如何整合Microsoft.Extensions.DependencyInjection和Castle.Core(完结篇)

    还是先上代码, 这是基础版本我们要达成的目标,仅需定义一个特性即可完成拦截的目标 如上是我们定义的拦截器基类,我们想要达到的目标是,只要继承该基类,并覆写InterceptAsync 方法即可实现具有特定功能的拦截类,而容器会自动代理到该拦截类,实现拦截。 这里要感

    2024年02月02日
    浏览(26)
  • 聊一聊为什么我要整合Microsoft.Extensions.DependencyInjection和Castle.Core

    如果用到动态代理,大家可能会有几种选择,排到前列的是Autofac+Castle、AspectCore和DoraInterception, 我将从我当时研究的经历,以及我遇到的场景,为大家展示下 聊一聊我为什么要费时费力的整合Microsoft.Extensions.DependencyInjection和Castle.Core 直接上源码 如上所示的接口定义了一个事

    2024年02月01日
    浏览(51)
  • MFC中不同编码格式内容的写入

    把CString中的内容写到UTF16LE中去,可以使用WriteString或者Write。 WriteString函数会把UNICODE字符串以UTF16LE编码格式写入,遇到空字符会提前结束 Write函数则不受空字符的影响,不会提前结束。 使用WriteString向UTF16LE中写入CString类型的文本。 WriteString在写入文本内容后可以指针定位在

    2024年02月22日
    浏览(26)
  • vue中点击添加类名,并且实现升降序

    要求:掌握indexOf()用法;动态绑定类名的对象写法;iconfont使用;split()用法;三元运算符用法;es6模板字符串; 说明:首先综合元素默认有元素并且是降序。服务器传来的数据格式:1: 综合,2: 价格 asc: 升序,desc: 降序 。下面意思是综合,降序。它放在data中searchParams.order里面

    2024年02月14日
    浏览(24)
  • Microsoft WiFi与Skype WiFi有什么不同?

    微软今天正式推出了名为“Microsoft WiFi”的新服务,尽管是对原有Skype WiFi服务的品牌更名,但是服务中也引入了很多新的内容。 Skype WiFi在全球范围内提供超200万个WiFi热点,用户可使用Skype点数按分钟付费。而随着Microsoft WiFi服务的推出,Skype WiFi即将退休,前者提供了相似的

    2024年02月08日
    浏览(20)
  • Python3,多种方法,同时执行多条SQL语句,并把查询结果分别写入不同Sheet页,妥妥的学到了。

    小屌丝 :鱼哥,我想请教一个问题。 小鱼 :国庆假期你经历了什么,让你变得如此的 “ 善良 ”? 小屌丝 :别这么说,我一直很善良,至少,很正直… 小鱼 :打住,直接点, 你有什么需要帮助的? 小屌丝 :我就是想把查询的结果也入到excel表中 小鱼 :然后呢? 小屌丝 :

    2024年02月08日
    浏览(44)
  • Microsoft Excel 教程:如何在 Excel 中将文本拆分为不同的列?

    欢迎观看 Microsoft Excel 教程,小编带大家学习 Microsoft Excel 的使用技巧,了解如何在 Excel 中使用“文本分列向导 ”将文本拆分为不同的列。 使用「文本分列向导」,将一个或多个单元格中的文本拆分为多个。将数据拆分为不同的列,选择要拆分的单元格,单击「数据」-「分

    2024年02月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包