我使用以下代码试用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。*
答案 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!");
}