20 | 结构化日志组件Serilog:记录对查询分析友好的日志
结构化日志的好处
- 易于检索
- 易于分析统计
场景举例
- 实现日志告警
- 实现上下文的关联
- 实现追踪系统集成
示例
首先我们新建Web
程序👉选择API
模板
改造Program
类
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Serilog;
using Serilog.Formatting.Compact;
using System;
using System.IO;
namespace LoggingSerilogDemo
{
public class Program
{
public static IConfiguration Configuration { get; } = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", false, true)
.AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production"}.json")
.AddEnvironmentVariables()
.Build();
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
// 将配置的值传递给Serilog的提供程序
.ReadFrom.Configuration(Configuration)
.MinimumLevel.Debug()
.Enrich.FromLogContext()
.WriteTo.Console(new RenderedCompactJsonFormatter())
.WriteTo.File(formatter: new CompactJsonFormatter(), "Logs\\Myapp.txt", rollingInterval: RollingInterval.Day)
.CreateLogger();
try
{
Log.Information("Starting wen host");
CreateHostBuilder(args).Build().Run();
return 0;
}
catch (Exception exception)
{
Log.Fatal(exception, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
})
.UseSerilog(dispose: true);
}
}
修改appsetting.json
配置文件
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Error",
"System": "Information"
}
}
},
"AllowedHosts": "*"
}
推荐这些文章:
问题
这个语句中between 1and 20不能去除,导致只查询1至20条数据,但是我的查询结果是在20条意外结果查询不出来,怎么办
最佳回答
你把where条件写在只查询里面,也就是括号括起来的那个select中
...
January tenth, 20221 Nuget 引入程序包
log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore
2 准备好配置文件
cfgfile
3 配置读取配置文件生效
4 注入得到log4net实例开始写日志
&n...
问题
各位大神,,,sql里面数据上了20万查询中文会比查询数字慢吗? 没有分了,,,帮帮忙吧
最佳回答
如果使用索引的话,应该是没有很大的区别的
...
1. Using where Using index
查询的列被索引覆盖,并且where筛选条件是索引列之一但是不是索引的前导列,意味着无法直接通过索引查找来查询到符合条件的数据
2. Using index condition
与 Using where 类似,查询的列不完全被索引覆盖,where条件中是一个前导列的范围
3. usi...
Log::info('测试');
Log是一个门面 本质类是Logmanager 门面就是门面 就是代理 本质上 没有任何内在的东西
public function info($message, array $context = [])
{
$this->dri...
Java如何声明并初始化一个boolean型的数组?
public class Main{ static boolean[] arr1 = new boolean[20]; public static void main(String[] args){ boolean[] arr2 = new boolean[20]; /...
【Net6】Net6使用Serilog的一个Program.cs 备份
dotnet add package Serilog.AspNetCore
using Serilog;
using Serilog.Events;
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Override("Microsoft", LogEventLeve...
构造函数中的IConfiguration configuration在什么地方提供的?
问题
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
......
...
public class B {
public static void main(String[] args) {
int bb = 5;
int pp = bb++;
System.out.println(pp);
}
}
...
文章链接:https://www.dianjilingqu.com/50984.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。