使用Serilog.Sinks.AzureDocumentDB记录Azure DocumentDB中缺少的文档

时间:2017-04-13 17:36:16

标签: serilog

我使用以下代码试用Serilog和DocumentDB接收器。我看到创建了数据库(诊断)和集合(日志),但我在Azure门户的DocumentExplorer中看不到任何文档。

这是代码。

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#console app probject。 Nuget版本是:

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

Debug Output包含DocDBTrace中的以下内容:

DocDBTrace信息:0:在端点初始化id为1的DocumentClient:https://.documents.azure.com/,带ConnectionMode:网关,连接协议:Https和一致性级别:null 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:处理了ID为1的DocumentClient。*

1 个答案:

答案 0 :(得分: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!");
}