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": "*"
}

推荐这些文章:

分页查询导致20页后面的查询条件查询不出来

问题
这个语句中between 1and 20不能去除,导致只查询1至20条数据,但是我的查询结果是在20条意外结果查询不出来,怎么办

最佳回答
你把where条件写在只查询里面,也就是括号括起来的那个select中

...

日志组件 Log4net

January tenth, 20221 Nuget 引入程序包
  log4net   Microsoft.Extensions.Logging.Log4Net.AspNetCore
2 准备好配置文件
  cfgfile
3 配置读取配置文件生效
  
 
 
4 注入得到log4net实例开始写日志
  
&n...

sql里面数据上了20万查询中文会比查询数字慢吗?

问题
各位大神,,,sql里面数据上了20万查询中文会比查询数字慢吗? 没有分了,,,帮帮忙吧

最佳回答
如果使用索引的话,应该是没有很大的区别的

...

MYSQL性能分析之explain 之extra列案例分析

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型数组

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; }
......
...

Java: i=i++字节码分析

public class B {

public static void main(String[] args) {
int bb = 5;
int pp = bb++;
System.out.println(pp);
}
}

 
 
 

...

文章标题:20 | 结构化日志组件Serilog:记录对查询分析友好的日志
文章链接:https://www.dianjilingqu.com/50984.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>