2017-04-13 29 views
1

我使用以下代碼嘗試使用Serilog和DocumentDB接收器。我看到創建了數據庫(診斷)和集合(日誌),但我沒有在Azure門戶的DocumentExplorer中看到任何文檔。使用Serilog.Sinks.AzureDocumentDB丟失Azure DocumentDB中的日誌文檔

這是代碼。

class Program 
{ 
    static void Main(string[] args) 
    { 
     Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg)); 

     var Logger = new LoggerConfiguration() 
      .MinimumLevel.Verbose() 
      .WriteTo.Console() 
      .WriteTo.AzureDocumentDB("https://<blankedout>.documents.azure.com:443/", "some key", timeToLive: 7) 
      .CreateLogger(); 
     Logger.Verbose("Verbose"); 
     Logger.Debug("Debug"); 
     Logger.Information("DirectTest"); 
     Logger.Error("BADFOOD!"); 
    } 
} 

這是針對使用VS2015的.NET 4.6的C#控制檯應用程序問題。的NuGet版本:

Microsoft.Azure.DocumentDB 1.13.1 Serilog 2.4.0 Serilog.Sinks.AzureDocumentDB 3.6.1 Serilog.Sinks.Console 2.1.0

調試輸出包含DocDBTrace以下:

DocDBTrace信息:0:DocumentClient與端點初始化ID 1:HTTPS://.documents.azure.com/與ConnectionMode:網關,連接協議:HTTPS和一致性水平:空 2017-04-13T17 :30:51.8553244Z正在打開數據庫診斷

DocDBTrace信息:0:RefreshLocationAsync()刷新地點

DocDBTrace信息:0:設置WriteEndpoint https://-westus2.documents.azure.com/ ReadEndpoint https://-westus2.documents.azure.com/

Serilog.Sinks.AzureDocumentDB.Sinks.AzureDocumentDb.bulkImport.js

DocDBTrace信息:0:DocumentClient與設置ID 1 *

回答

0

水槽是異步的。你需要調用Log.CloseAndFlush()之前您的應用程序退出,以確保之前的過程中退出的文件都寫:

using (var logger = new LoggerConfiguration() 
    .MinimumLevel.Verbose() 
    .WriteTo.Console() 
    .WriteTo.AzureDocumentDB("https://<blankedout>.documents.azure.com:443/", "some key", timeToLive: 7) 
    .CreateLogger()) 
{ 
    logger.Verbose("Verbose"); 
    logger.Debug("Debug"); 
    logger.Information("DirectTest"); 
    logger.Error("BADFOOD!"); 
}