0%

第一步:安装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()
.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