首页 文章

Serilog RavenDb不能在asp.net 5应用程序中工作

提问于
浏览
2

我正在看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();
}

然后我将 Logger 配置代码移动到 Configure 方法并使用DI实例,但这也不起作用 . 我可以使用相同的 DocumentStore 在RavenDb中存储其他对象 .

我错过了配置设置吗?

1 回答

  • 0

    我能够使用最新的RavenDb客户端 . 我创建了一个新的(包)样式库,添加了Serilog nuget包v2.0.0-beta-403,添加了RavenDB.Client v3 nuget包,并从现有的Serilog.Sinks.RavenDb库中删除了.cs文件 . 它编译和工作,我没有必要更改任何代码 .

    我还没有机会测试它,但似乎工作正常 . 当然,我不知道Serilog v2 beta有多稳定,或者它发布前有多长 . 好消息是serilog v2支持.netcore . 不幸的是RavenDb客户端没有,至少现在还没有 .

相关问题