如何在NET 6.0使用结构化的日志系统
首先建个AspNetCoreWebAPI6.0的项目,当然也可以是AspNetCore Web MVC项目。
安装组件:Serilog.AspNetCore(6.0.1)和Serilog.Sinks.Seq(5.2.1)
Seq — centralized structured logs for .NET, Java, Node.js (datalust.co)
运行结果如下,已替换系统自带information:
1 using Serilog;
2 using Serilog.Events;
3
4 // Setup serilog in a two-step process. First, we configure basic logging
5 // to be able to log errors during ASP.NET Core startup. Later, we read
6 // log settings from appsettings.json. Read more at
7 // https://github.com/serilog/serilog-aspnetcore#two-stage-initialization.
8 // General information about serilog can be found at
9 // https://serilog.net/
10 Log.Logger = new LoggerConfiguration()
11 .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
12 .Enrich.FromLogContext()
13 .WriteTo.Console()
14 .CreateBootstrapLogger();
15
16 try
17 {
18 Log.Information("Starting the web host");
19 var builder = WebApplication.CreateBuilder(args);
20 // Full setup of serilog. We read log settings from appsettings.json
21 builder.Host.UseSerilog((context, services, configuration) => configuration
22 .ReadFrom.Configuration(context.Configuration)
23 .ReadFrom.Services(services)
24 .Enrich.FromLogContext());
25 // Add services to the container.
26
27 builder.Services.AddControllers();
28 // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
29 builder.Services.AddEndpointsApiExplorer();
30 builder.Services.AddSwaggerGen();
31
32 var app = builder.Build();
33
34 // Configure the HTTP request pipeline.
35 app.UseSerilogRequestLogging(configure =>
36 {
37 configure.MessageTemplate = "HTTP {RequestMethod} {RequestPath} ({UserId}) responded {StatusCode} in {Elapsed:0.0000}ms";
38 });
39 // Configure the HTTP request pipeline.
40 if (app.Environment.IsDevelopment())
41 {
42 app.UseSwagger();
43 app.UseSwaggerUI();
44 }
45
46 app.UseHttpsRedirection();
47
48 app.UseAuthorization();
49
50 app.MapControllers();
51
52 app.Run();
53 }
54 catch
55 (Exception ex)
56 {
57 Log.Fatal(ex, "Host terminated unexpexctedly");
58 }
59 finally
60 {
61 Log.CloseAndFlush();
62 }
1 {
2 //"Logging": {
3 // "LogLevel": {
4 // "Default": "Information",
5 // "Microsoft.AspNetCore": "Warning"
6 // }
7 //},
8 "Serilog": {
9 "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Seq" ],
10 "MinimumLevel": "Information",
11 // Where do we want to write our logs to? Choose from a large number of sinks:
12 // https://github.com/serilog/serilog/wiki/Provided-Sinks.
13 "WriteTo": [
14 {
15 "Name": "Console"
16 },
17 {
18 "Name": "File",
19 "Args": { "path": "Logs/log.txt" }
20 },
21 {
22 "Name": "Seq",
23 "Args": { "serverUrl": "http://localhost:8888" }
24 }
25 ],
26 "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
27 "Properties": {
28 "Application": "AspNetCoreSerilogDemo"
29 }
30 },
31 "AllowedHosts": "*"
32 }
请求跟踪分析:

using Microsoft.AspNetCore.Mvc; namespace AspNetCoreSerilogDemo.Controllers
{
[ApiController]
[Route("[controller]")]
public class SeriLogDemoController : ControllerBase
{ private readonly ILogger<SeriLogDemoController> _logger; public SeriLogDemoController(ILogger<SeriLogDemoController> logger)
{
_logger = logger;
} [HttpGet]
public string String()
{
_logger.LogInformation("this is serilog...");
return "Suscess";
} }
}

配置文件里面输出路径有"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Seq" ],所以同样会输出到日志文件中,指定路径和文件名:
更多更详细功能参考:
Serilog — simple .NET logging with fully-structured events
Seq — centralized structured logs for .NET, Java, Node.js (datalust.co)
如何在NET 6.0使用结构化的日志系统的更多相关文章
- 基于ELK Stack7.1.0构建多用户安全认证日志系统
配置tls加密通信及身份验证,主要目的是为了确保集群数据安全.在es早期版本,安全认证相关功能都属于商业付费服务,一般普通公司如果集群部署在内网,基本上就忽略了这些安全认证,当然也可以通过Ngin ...
- 探索ASP.Net Core 3.0系列六:ASP.NET Core 3.0新特性启动信息中的结构化日志
前言:在本文中,我将聊聊在ASP.NET Core 3.0中细小的变化——启动时记录消息的方式进行小的更改. 现在,ASP.NET Core不再将消息直接记录到控制台,而是正确使用了logging 基 ...
- Asp.Net Core中利用Seq组件展示结构化日志功能
在一次.Net Core小项目的开发中,掌握的不够深入,对日志记录并没有好好利用,以至于一出现异常问题,都得跑动服务器上查看,那时一度怀疑自己肯定没学好,不然这一块日志不可能需要自己扒服务器日志来查看 ...
- 如何利用NLog输出结构化日志,并在Kibana优雅分析日志?
上文我们演示了使用NLog向ElasticSearch写日志的基本过程(输出的是普通文本日志),今天我们来看下如何向ES输出结构化日志.并利用Kibana中分析日志. NLog输出结构化日志 Elas ...
- Structured Streaming + Kafka Integration Guide 结构化流+Kafka集成指南 (Kafka broker version 0.10.0 or higher)
用于Kafka 0.10的结构化流集成从Kafka读取数据并将数据写入到Kafka. 1. Linking 对于使用SBT/Maven项目定义的Scala/Java应用程序,用以下工件artifact ...
- XHTML 结构化:使用 XHTML 重构网站 分类: C1_HTML/JS/JQUERY 2014-07-31 15:58 249人阅读 评论(0) 收藏
http://www.w3school.com.cn/xhtml/xhtml_structural_01.asp 我们曾经为本节撰写的标题是:"XHTML : 简单的规则,容易的方针.&qu ...
- 全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门解析非结构化数据应用——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ...
- 结构化您的Python工程
我们对于"结构化"的定义是您关注于怎样使您的项目最好地满足它的对象性,我们 需要去考虑如何更好地利用Python的特性来创造简洁.高效的代码.在实践层面, "结构化&qu ...
- Shell 更多结构化命令(流程控制)
更多的结构化命令 上一章里,你看到了如何通过检查命令的输出和变量的值来改变 shell 脚本程序的流程.本章会继续介绍能够控制 shell 脚本流程的结构化命令.你会了解如何重复一些过程和命令,也就是 ...
- Shell脚本结构化-控制流
脚本结构化命令 上一章给出的那些 shell 脚本里,shell 按照命令在脚本中出现的顺序依次进行处理.对顺序操作来说,这已经足够了,因为在这种操作环境下,你想要的就是所有的命令按照正确的顺序执行. ...
随机推荐
- ubuntu20.04不定时卡死,鼠标和键盘都不可用,且tty无效
事情的经过: 已经在ubuntu上安装了好多东西,配置了好多环境,最近突然莫名卡死.我遇到的问题是: 1.如果开机之后只是打开终端,打开编辑器之类的操作,系统不会卡死. 2.一旦打开firefox火狐 ...
- 【Go 编程实践】从零到一:创建、测试并发布自己的 Go 库
为什么需要开发自己的 Go 库 在编程语言中,包(Package)和库(Library)是代码组织和复用的重要工具.在 Go 中,包是代码的基本组织单位,每个 Go 程序都由包构成.包的作用是帮助组织 ...
- 混合应用与Hybrid App开发上架流程透析
Hybrid App(混合 App)已经成为大家接触最为广泛的 App 形式,不管是我们用到的微信.支付宝还是淘宝.京东等大大小小的应用都非常热衷于Hybrid App 带来的研发效率提升和灵活性. ...
- Dash应用浏览器端回调常用方法总结
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/dash-master 大家好我是费老师,回调函数是我们在Dash应用中实现各种交互功能的核心,在绝大 ...
- 提高cin cout的速度
ios::sync_with_stdio(false) :用来关闭iostream与stdio的同步,从而提高 cin cout 的效率,但是就不能再用 scanf printf 了,因为不关闭之前 ...
- 【WCH以太网接口系列芯片】基于CH395的组播应用
---------------------------------------------------------------------------------------------------- ...
- Linux常用命令(持续完善中......)
1.查看内存 top 2.查看磁盘存储情况 df -h 3.查看端口占用情况 netstat -tunlp | grep 端口号 4.查看报告系统运行时长及平均负载 uptime 5.查看进程 ps ...
- 安装华企盾DSC防泄密软件造成CAD2012卡住怎么办?
将下图目录的.exe程序删除或者重命名
- Docker部署系列之Docker Compose安装Redis三主三从集群
总结/朱季谦 在日常开发或者编程当中,经常需要用到redis集群,若是按照传统的方式,一个机器一个机器搭建,难免过于繁琐,故而可以通过dock er-compose编排方式,快速搭建.我在搭建过程当中 ...
- ASR项目实战-交付团队的分工
对于通常的软件项目,参与角色,比如可以有用户,消费者,产品团队,研发团队(研发团队包括开发和测试),运营团队,运维团队,管理团队. 通常认为,用户,负责购买服务的群体,而消费者,负责使用业务的群体.这 ...