Serilog 在 Reliable Actor Services 中不起作用

Posted

技术标签:

【中文标题】Serilog 在 Reliable Actor Services 中不起作用【英文标题】:Serilog doesn't work in Reliable Actor Services 【发布时间】:2018-07-02 09:12:38 【问题描述】:

我有两个 Service Fabric 应用程序。第一个是 Asp.Net Core Service Fabric,第二个是使用计时器运行的 Actor Service。

两者都使用 Serilog 设置。 Asp.Net Core 运行良好。那里没问题,但是第二个服务,Actor Service,我使用相同的配置和相同的 nuget 包,但 Serilog 不保存任何日志。

添加配置

<add key="serilog:using:Seq" value="Serilog.Sinks.Seq" />
    <add key="serilog:write-to:Seq.serverUrl" value="http://*****" />
    <add key="serilog:write-to:Seq.apiKey" value="UfKpKLicyZI3hGe7Vc" />
    <add key="serilog:using:RollingFile" value="Serilog.Sinks.RollingFile" />
    <add key="serilog:write-to:RollingFile.pathFormat" value="C:\File-Date.txt" />
    <add key="serilog:write-to:RollingFile.retainedFileCountLimit" value="10" />

【问题讨论】:

您能分享一下您是如何在 Actor 服务中设置 Serilog 的吗? 已设置编辑 好了,配置就到这里了,还展示了如何在服务中初始化 Serilog。 【参考方案1】:

这里最可能的原因是 Serilog Logger 在托管 actor 的进程关闭之前不是 Dispose()d(如果您正在设置静态 Log 类而不是直接使用记录器实例,这是通过Log.CloseAndFlush() 实现的。

【讨论】:

谢谢你。这对我有用。我假设演员在 Serilog 工作之前被处置,然后现在我在完成执行之前调用 CloseAndFlush 并且它可以工作......谢谢 太好了,感谢您的回复。有助于将问题标记为已回答,以便其他人知道。干杯! @novac 如果它解决了您的问题,请记住使用答案旁边的绿色复选标记。它让其他人知道您的问题已解决,并为 Nicholas 提供想象中的 Internet 点,这些点可以解锁 Stack Overflow 上的真正权限,这样他就可以有更多的工具来贡献。

以上是关于Serilog 在 Reliable Actor Services 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何为远程 Service Fabric 集群创建 Actor 代理

Serilog高级玩法之用Serilog记录所选终结点附加属性

为 ASPNET CORE 7 项目添加 Serilog

解决错误 - 无法解析“Serilog.ILogger”类型的服务

Serilog:记录到不同的文件

如何在 appsettings.json 中使用多个单独的记录器 Serilog 文件