簡體   English   中英

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!");
    });
}

一切都很好地記錄到了文件和控制台中,並且創建了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程序包,並將其從現有Seri​​log.Sinks.RavenDb庫放入.cs文件中。 它編譯並工作了,我不必更改任何代碼。

我還沒有機會進行大量測試,但是它似乎運行良好。 當然,我不知道Serilog v2 beta的穩定性如何,或者直到發行多久。 令人高興的是serilog v2支持.netcore。 不幸的是,RavenDb客戶端還沒有,至少現在還沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM