-
Notifications
You must be signed in to change notification settings - Fork 3
ASP.NET Core 使用Serilog
Ni Yanwei edited this page Jun 21, 2018
·
3 revisions
Install-Package Serilog.AspNetCore -DependencyVersion Highest
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.File
Install-Package Serilog.Sinks.ElasticSearch
public static void Main(string[] args) {
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.File("logs\\log.txt", rollingInterval: RollingInterval.Day, rollOnFileSizeLimit: true)
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri("http://localhost:9200")) {
AutoRegisterTemplate = true,
AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6,
FailureCallback = e => Console.WriteLine("Unable to submit event " + e.MessageTemplate),
EmitEventFailure = EmitEventFailureHandling.WriteToSelfLog |
EmitEventFailureHandling.WriteToFailureSink |
EmitEventFailureHandling.RaiseCallback
})
.CreateLogger();
try {
Log.Information("Starting web host");
BuildWebHost(args).Run();
}
catch (Exception ex) {
Log.Fatal(ex, "Host terminated unexpectedly");
}
finally {
Log.CloseAndFlush();
}
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(Startup.ConfigureAppConfiguration)
.UseStartup<Startup>()
.UseSerilog()
.Build();
}
public class ValuesController : Controller {
private ILogger log = null;
public ValuesController(ILogger<ValuesController> logger) {
this.log = logger;
}
// GET api/values/5
[HttpGet("{id}")]
public VendorModel Get(int id) {
var vendor = vendors.Where(v => v.Id == id).FirstOrDefault();
log.LogInformation("Read {@Vendor}",vendor);
return vendor;
}