【发布时间】:2020-01-15 04:53:12
【问题描述】:
在我的 Web Api Net.Core 2.2 项目中,我需要使用 serilog,我想在云上的 MongoDB 实例上写日志。 Serilog 已在控制台和文件上正确写入,但在 MongoDB 实例上却没有。 此外它没有抛出或记录任何错误。 我怎样才能检查发生了什么? 我该如何解决?
非常感谢大家。
这是一个 C# Asp.Net WebApi .Net Core 2.2 应用程序 我在下面安装了 nuget 包: Serilog.AspNetCore (3.0.0) (及其依赖) Serilog.Sinks.File (4.0.0) (及其依赖) Serilog.Sinks.MongoDB (4.0.0)(及其依赖项)
我的程序.cs
public class Program
{
static readonly LoggerProviderCollection Providers = new LoggerProviderCollection();
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.File("log.txt", rollingInterval: RollingInterval.Day)
.WriteTo.MongoDB("mongodb://myusername:mypassword@222.111.55.123:27017/mydbName", collectionName: "log")
.WriteTo.Providers(Providers)
.CreateLogger();
try
{
Log.Information("Starting web host");
CreateWebHostBuilder(args).Build().Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog(providers: Providers);
}
我的 Startup.cs
public void ConfigureServices(IServiceCollection services){
...
services.AddLogging();
...
}
public void Configure(IApplicationBuilder app, IBackgroundJobClient backgroundJobs, IHostingEnvironment env, ODataModelBuilder modelBuilder)
{
...
app.UseSerilogRequestLogging();
...
}
我用过的一个简单的测试控制器
[Route("api/[controller]")]
[ApiController]
public class ValueController : ControllerBase
{
readonly ILogger<ValueController> _logger;
public ValueController(ILogger<ValueController> logger)
{
_logger = logger;
}
[HttpGet]
public string Get()
{
_logger.LogInformation("That's all!");
return "Ok";
}
}
【问题讨论】:
-
在硬盘上搜索今天更改的 txt 文件。它可能在不同的文件夹中。
标签: c# mongodb asp.net-core serilog