zoukankan      html  css  js  c++  java
  • 使用Serilog输出到ES(使用笔记)

    第一步:安装Serilog

      使用NuGet包安装以下组件:

    Serilog.AspNetCore
    Serilog.Settings.Configuration
    Serilog.Sinks.Console
    Serilog.Sinks.Elasticsearch

    第二步:修改Program.cs文件

     public class Program
        {
            public static readonly string Namespace = typeof(Program).Namespace;
            public static readonly string AppName = Namespace.Substring(Namespace.LastIndexOf('.', Namespace.LastIndexOf('.') - 1) + 1);
    
            public static int Main(string[] args)
            {
                var configuration = GetConfiguration();
                Log.Logger = CreateSerilogLogger(configuration);
                try
                {
                    Log.Information("Configuring web host ({ApplicationContext})...", AppName);
                    var host = BuildWebHost(configuration, args);
    
                    Log.Information("Starting web host ({ApplicationContext})...", AppName);
                    host.Run();
    
                    return 0;
                }
                catch (Exception ex)
                {
                    Log.Fatal(ex, "Program terminated unexpectedly ({ApplicationContext})!", AppName);
                    return 1;
                }
                finally
                {
                    Log.CloseAndFlush();
                }
                 
            }
    
            private static ILogger CreateSerilogLogger(IConfiguration configuration)
            {
    //            var seqServerUrl = configuration["Serilog:SeqServerUrl"];
                return new LoggerConfiguration()
                    .MinimumLevel.Verbose()
                    .Enrich.WithProperty("ApplicationContext", AppName)
                    .Enrich.FromLogContext()
                    .WriteTo.Console(new ElasticsearchJsonFormatter())
    //                .WriteTo.Console()
    //                .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) //写入sql
                    .ReadFrom.Configuration(configuration)
                    .CreateLogger();
            }
    
            private static IConfiguration GetConfiguration()
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                    .AddEnvironmentVariables();
    
                return builder.Build();
            }
    
            private static IWebHost BuildWebHost(IConfiguration configuration, string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .CaptureStartupErrors(false)
                    .UseStartup<Startup>()
                    .UseConfiguration(configuration)
                    .UseSerilog()
                    .Build();
    
        
        }

    第三步:修改appsettings.json文件

    {
      "Serilog": {
        "Using": [ "Serilog.Sinks.Console" ],
        "MinimumLevel": "Verbose",
        "WriteTo": [
          { "Name": "Console" }
        ],
        "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
        "Destructure": [
    
          {
            "Name": "ToMaximumDepth",
            "Args": { "maximumDestructuringDepth": 4 }
          },
          {
            "Name": "ToMaximumStringLength",
            "Args": { "maximumStringLength": 100 }
          },
          {
            "Name": "ToMaximumCollectionCount",
            "Args": { "maximumCollectionCount": 10 }
          }
        ],
        "Properties": {
          "Application": "deploy-demo"
        }
      },
      "AllowedHosts": "*"
    }

    第四步:打包成镜像运行

    docker run -d -p 8003:80 --log-driver=fluentd --link elasticsearch --log-opt fluentd-address=192.168.0.186:24224 --network net_db --name deploydemo imagename
  • 相关阅读:
    对Cost (%CPU) 粗略的理解
    SQL AND &amp; OR 运算符
    [Nagios] Error: Template &#39;timman&#39; specified in contact definition could not be not found (c
    质因数分解
    细数人体器官仿生,还有哪些可开发的
    利用京东云擎架设免费Wordpress 博客(git方式)
    C++内存管理变革(6):通用型垃圾回收器
    二分查找法
    百度云存储教程---免费建立自己的静态网站
    paip.提升效率---filter map reduce 的java 函数式编程实现
  • 原文地址:https://www.cnblogs.com/guoyiwen/p/10419288.html
Copyright © 2011-2022 走看看