Serilog RavenDb 接收器无法在 asp.net 5 应用程序中工作
Serilog RavenDb sink not working in an asp.net 5 app
我正在查看 serilog 和 运行 一些测试。到目前为止,它可以很好地写入控制台或文件。然而,我没有任何运气让它与 RavenDb 接收器一起工作。我正在尝试让这个在 asp.net 5 应用程序中工作。
我查看了以下文章:
http://nblumhardt.com/2015/05/diagnostic-logging-in-dnx-asp-net-5/
http://nblumhardt.com/2013/06/serilog-and-ravendb/
我从一个空应用程序开始,并在 project.json 中添加了以下依赖项。
"Serilog.Framework.Logging": "1.0.0-rc1-final-10071",
"Serilog.Sinks.RavenDB": "1.5.4",
"RavenDB.Client": "3.0.30000"
我也删除了 dnxcore。
然后我在startup.cs中添加了如下代码:
public Startup()
{
var documentStore = new DocumentStore()
{
Url = "http://localhost:8080",
DefaultDatabase = "Logs"
}.Initialize();
Log.Logger = new LoggerConfiguration()
.WriteTo.File(@"c:\temp\log.txt")
.WriteTo.Console()
.WriteTo.RavenDB(documentStore)
.CreateLogger();
}
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddSerilog();
app.UseIISPlatformHandler();
app.Run(async (context) =>
{
Log.Information("Hello World");
await context.Response.WriteAsync("Hello World!");
});
}
一切都很好地记录到文件和控制台,并且创建了日志数据库,但没有日志条目存储在 RavenDb 中。
我尝试了各种日志级别。我尝试减少批量大小。我怀疑这与文档存储的生命周期有关,所以我在 ConfigureServices
方法中添加了以下内容。
services.AddSingleton(x =>
{
return new DocumentStore()
{
Url = "http://localhost:8080/",
DefaultDatabase = "Test",
}.Initialize();
}
然后我将记录器配置代码移动到Configure
方法中并使用了 DI 实例,但这也不起作用。我可以使用相同的 DocumentStore
将其他对象存储在 RavenDb 中。
我是否遗漏了配置设置或其他内容?
我能够在最新的 RavenDb 客户端上使用它。我创建了一个新的(包)样式库,添加了 Serilog nuget 包 v2.0.0-beta-403,添加了 RavenDB.Client v3 nuget 包,并从现有的 Serilog.Sinks.RavenDb 库中删除了 .cs 文件。它编译并运行,我不需要更改任何代码。
我还没有机会对其进行太多测试,但它似乎运行良好。当然,我不知道 Serilog v2 beta 的稳定性如何,也不知道它要发布多久。好消息是 serilog v2 支持 .netcore。不幸的是,RavenDb 客户端没有,至少现在还没有。
我正在查看 serilog 和 运行 一些测试。到目前为止,它可以很好地写入控制台或文件。然而,我没有任何运气让它与 RavenDb 接收器一起工作。我正在尝试让这个在 asp.net 5 应用程序中工作。 我查看了以下文章:
http://nblumhardt.com/2015/05/diagnostic-logging-in-dnx-asp-net-5/ http://nblumhardt.com/2013/06/serilog-and-ravendb/
我从一个空应用程序开始,并在 project.json 中添加了以下依赖项。
"Serilog.Framework.Logging": "1.0.0-rc1-final-10071",
"Serilog.Sinks.RavenDB": "1.5.4",
"RavenDB.Client": "3.0.30000"
我也删除了 dnxcore。
然后我在startup.cs中添加了如下代码:
public Startup()
{
var documentStore = new DocumentStore()
{
Url = "http://localhost:8080",
DefaultDatabase = "Logs"
}.Initialize();
Log.Logger = new LoggerConfiguration()
.WriteTo.File(@"c:\temp\log.txt")
.WriteTo.Console()
.WriteTo.RavenDB(documentStore)
.CreateLogger();
}
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddSerilog();
app.UseIISPlatformHandler();
app.Run(async (context) =>
{
Log.Information("Hello World");
await context.Response.WriteAsync("Hello World!");
});
}
一切都很好地记录到文件和控制台,并且创建了日志数据库,但没有日志条目存储在 RavenDb 中。
我尝试了各种日志级别。我尝试减少批量大小。我怀疑这与文档存储的生命周期有关,所以我在 ConfigureServices
方法中添加了以下内容。
services.AddSingleton(x =>
{
return new DocumentStore()
{
Url = "http://localhost:8080/",
DefaultDatabase = "Test",
}.Initialize();
}
然后我将记录器配置代码移动到Configure
方法中并使用了 DI 实例,但这也不起作用。我可以使用相同的 DocumentStore
将其他对象存储在 RavenDb 中。
我是否遗漏了配置设置或其他内容?
我能够在最新的 RavenDb 客户端上使用它。我创建了一个新的(包)样式库,添加了 Serilog nuget 包 v2.0.0-beta-403,添加了 RavenDB.Client v3 nuget 包,并从现有的 Serilog.Sinks.RavenDb 库中删除了 .cs 文件。它编译并运行,我不需要更改任何代码。
我还没有机会对其进行太多测试,但它似乎运行良好。当然,我不知道 Serilog v2 beta 的稳定性如何,也不知道它要发布多久。好消息是 serilog v2 支持 .netcore。不幸的是,RavenDb 客户端没有,至少现在还没有。