欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 结构化日志和集中日志服务

结构化日志和集中日志服务

2025/2/25 18:39:00 来源:https://blog.csdn.net/Anoxia_li/article/details/145008097  浏览:    关键词:结构化日志和集中日志服务

目录

结构化日志

Serilog使用

集中化日志

集中日志服务

Exceptionless

控制台项目

总结


结构化日志

结构化日志比普通文本更利于日志的分析,比如统计“邮件发送失败”错误发生了多少次。

NLog也可以配置结构化日志,不过配置麻烦,推荐用Serilog。

Serilog使用

  1. NuGet安装:Serilog.AspNetCore。
  2. static void Main(string[] args)
    {ServiceCollection services = new ServiceCollection();services.AddLogging(logBuilder =>{Log.Logger = new LoggerConfiguration().MinimumLevel.Debug().Enrich.FromLogContext().WriteTo.Console(new JsonFormatter()).CreateLogger();logBuilder.AddSerilog();});services.AddScoped<Test2>();using (ServiceProvider sp = services.BuildServiceProvider()){Test2 test2 = sp.GetRequiredService<Test2>();test2.Test();}
    }
  3. 要记录的结构化数据通过占位符来输出:logger.LogWarning("新增用户 {@person}",new { Id=3,Name="zack"});
  4. class Test2
    {private readonly ILogger<Test2> logger;public Test2(ILogger<Test2> logger){this.logger = logger;}public void Test(){User user = new User { Name = "admin", Email = "123@qq.com" };logger.LogDebug("注册用户{@person}", user);logger.LogDebug("注册用户", user);}
    }class User
    {public string Name { get; set; }public string Email { get; set; }
    }

  5. 同样可以输出到文件、数据库、MongoDB等。

集中化日志

集群化部署环境中,有N个服务器,如果每个服务器都把日志记录到本地文件,不便于查询、分析。需要把日志保存到集中化的日志服务器中。

集中日志服务

  1. 使用NLog、Serilog等可以把日志记录到数据库、MongoDB等地方,就可以实现“结构化、集中日志服务”,不过需要自己编写日志分析程序。
  2. 公有云厂商一般都提供了日志云服务,都带分析功能,都有对应Serilog插件,即使没有提供,开发一个插件也不麻烦。
  3. 如果没有用云平台或者想自己控制日志服务,可以使用Exceptionless或者ELK等。
  4.  Exceptionless、ELK即提供了现成的云服务,也提供了自己部署(Self Hosting)的模式。由于网速等原因,云服务不符合中国的要求,不过可以试用一下,看是否满足要求,再自己部署。

Exceptionless

控制台项目
  1. 到Exceptionless官网注册、登录后,新建一个项目,按照向导输入公司名字、项目名字后,网站就会给出一个apiKey。
  2. 项目NuGet安装Serilog的Exceptionless插件:Serilog.Sinks.Exceptionless。
  3. 在程序的最开始加上一句ExceptionlessClient.Default.Startup("拿到的apiKey"),然后Serilog的配置中加上一句:.WriteTo.Exceptionless()

总结

  1. 普通项目用NLog输出到文本文件即可,根据需要设定过滤、分类规则。
  2. 集群部署的项目用Serilog+“集中式日志服务”。如果需要记录结构化日志,再进行结构化输出。
  3. 如果用云服务的就够了,就用云服务的,免得自己部署;如果想自己控制日志数据就用自部署Exceptionless或者ELK(难度大)等。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词