зеркало из https://github.com/Azure/reddog-code.git
56 строки
1.9 KiB
C#
56 строки
1.9 KiB
C#
|
using System;
|
||
|
using Microsoft.AspNetCore.Hosting;
|
||
|
using Microsoft.Extensions.Hosting;
|
||
|
using Serilog;
|
||
|
using Serilog.Core;
|
||
|
using Serilog.Events;
|
||
|
using RedDog.MakeLineService.Models;
|
||
|
|
||
|
namespace RedDog.MakeLineService
|
||
|
{
|
||
|
public class Program
|
||
|
{
|
||
|
public static void Main(string[] args)
|
||
|
{
|
||
|
Log.Logger = new LoggerConfiguration()
|
||
|
.MinimumLevel.Information()
|
||
|
.MinimumLevel.Override("System", LogEventLevel.Warning)
|
||
|
.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
|
||
|
.Enrich.FromLogContext()
|
||
|
.Enrich.With(new UtcTimestampEnricher())
|
||
|
.Destructure.ByTransforming<OrderSummary>(os => new { OrderId = os.OrderId, FirstName = os.FirstName, LastName = os.LastName, LoyaltyId = os.LoyaltyId, OrderItemCount = os.OrderItems.Count, OrderTotal = os.OrderTotal })
|
||
|
.WriteTo.Console(outputTemplate: "[{UtcTimestamp:yyyy-MM-dd HH:mm:ss.fff} {Level:u3}] [{SourceContext}] {Message:lj}{NewLine}{Exception}")
|
||
|
.CreateLogger();
|
||
|
|
||
|
try
|
||
|
{
|
||
|
CreateHostBuilder(args).Build().Run();
|
||
|
}
|
||
|
catch (Exception e)
|
||
|
{
|
||
|
Log.Fatal(e, "Host terminated unexpectedly.");
|
||
|
}
|
||
|
finally
|
||
|
{
|
||
|
Log.CloseAndFlush();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public static IHostBuilder CreateHostBuilder(string[] args) =>
|
||
|
Host.CreateDefaultBuilder(args)
|
||
|
.UseSerilog()
|
||
|
.ConfigureWebHostDefaults(webBuilder =>
|
||
|
{
|
||
|
webBuilder.UseStartup<Startup>();
|
||
|
});
|
||
|
}
|
||
|
|
||
|
class UtcTimestampEnricher : ILogEventEnricher
|
||
|
{
|
||
|
public void Enrich(LogEvent logEvent, ILogEventPropertyFactory pf)
|
||
|
{
|
||
|
logEvent.AddPropertyIfAbsent(pf.CreateProperty("UtcTimestamp", logEvent.Timestamp.UtcDateTime));
|
||
|
}
|
||
|
}
|
||
|
}
|