【发布时间】:2017-03-14 17:40:40
【问题描述】:
我正在使用 .NET Framework 4.6.1。在 Serilog 之上开发了一个记录器组件,并希望使用 Azure Document Db sink。我有一个奇怪的行为。我的第一个日志语句出现在 Document Db 中,但是在应用程序重新启动后,后续的日志消息不会出现。
internal class SeriLogger : ILogger
{
private static readonly string EndpointUri = "https://mysample.documents.azure.com:443/";
private static readonly string AuthKey = "UkgOMJT08bA5KOvd1O9IYgo0w==";
private static readonly string DatabaseName = "Diagnostics";
private static readonly string CollectionName = "Logs";
protected readonly Serilog.Core.Logger logger;
public SeriLogger()
{
logger = new LoggerConfiguration()
.WriteTo.AzureDocumentDB(EndpointUri, AuthKey, DatabaseName, CollectionName)
.CreateLogger();
//logger = new LoggerConfiguration()
//.WriteTo.RollingFile(Path.Combine(
// AppDomain.CurrentDomain.BaseDirectory, "log-{Date}.txt"), fileSizeLimitBytes: 536870912)
// .CreateLogger();
}
public void Log(string message, LogLevelEnum logLevel)
{
switch (logLevel)
{
case LogLevelEnum.Debug: logger.Debug(message); break;
case LogLevelEnum.Information: logger.Information(message); break;
case LogLevelEnum.Warning: logger.Warning(message); break;
case LogLevelEnum.Error: logger.Error(message); break;
case LogLevelEnum.Fatal: logger.Fatal(message); break;
}
}
我第一次调用 Log() 方法会创建一个新文档,但这会从第二次调用病房时停止。如果我重新启动应用程序,第一次调用会创建一个日志条目作为新文档,之后不再工作。知道我做错了什么吗?以下是我正在使用的 Nuget 版本
<packages>
<package id="Microsoft.Azure.DocumentDB" version="1.11.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net461" />
<package id="Serilog" version="2.4.0" targetFramework="net461" />
<package id="Serilog.Sinks.AzureDocumentDb" version="3.5.18" targetFramework="net461" />
<package id="Serilog.Sinks.File" version="3.2.0" targetFramework="net461" />
<package id="Serilog.Sinks.RollingFile" version="3.3.0" targetFramework="net461" />
</packages>
但日志记录与滚动文件接收器完美配合。请帮帮我。
我尝试为 serilog 启用诊断功能,如下所示Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
现在我可以在我的 VS 输出窗口中看到两行。
2017-03-14T07:40:18.5291346Z 将 2 条消息批量发送到 DocumentDB
2017-03-14T07:40:22.1107764Z 发生一个或多个错误。
【问题讨论】:
-
确保在应用关闭时释放
logger- 可能需要刷新批处理事件。 -
您好,我尝试使用后处理。但是日志消息甚至没有到达 Document Db(甚至不是第一次)。我正在使用 .NET 4.6.1,这会是一个原因吗?
-
我试图为 serilog 启用诊断,如下所示 Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));现在我可以在我的 VS 输出窗口中看到两行 2017-03-14T07:40:18.5291346Z 将 2 条消息批量发送到 DocumentDB 2017-03-14T07:40:22.1107764Z 发生一个或多个错误。
标签: azure logging azure-cosmosdb serilog