[英]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!");
});
}
一切都很好地记录到了文件和控制台中,并且创建了Logs数据库,但是在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客户端还没有,至少现在还没有。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.