在 WCF 中使用 Serilog

Posted

技术标签:

【中文标题】在 WCF 中使用 Serilog【英文标题】:Using Serilog from within WCF 【发布时间】:2014-09-21 16:22:11 【问题描述】:

我在我的网站和网络 API 中使用 Serilog,一切都很好。

现在我想。

但是当我新建一个 LoggerConfiguration 并从 WCF 中创建一个记录器时,日志记录似乎不起作用?例如,没有任何内容被输出到文本文件。

var seriLog = new LoggerConfiguration()
    .WriteTo.File(@"C:\Serilogs\myapp.txt")
    .CreateLogger();

seriLog.Debug("log message");

最终我想从 WCF 服务中写入 Seq。

我错过了什么或做错了什么?

有没有人得到一些工作代码示例来说明如何做到这一点?

/Seq 堆栈是否有技巧?

【问题讨论】:

【参考方案1】:

我想到了几件事-

首先,这里的设置代码是否只执行一次,即在应用程序启动时,所以只有一个记录器指向文本文件?一次只有一个记录器实例可以使用该文件。

接下来,运行的进程是否有访问文件的权限?

最后,文件是否打开,例如在记事本或其他可能将其锁定的应用中?

如果这些都没有激发任何想法,您可以在配置记录器之前设置 Serilog 的自日志:

SelfLog.Out = Console.Error;

这应该会显示在 VS 调试器中,因此如果 Serilog 捕获并抑制任何异常,您应该会看到它们。

如果您无法在调试器中运行它,请尝试:

SelfLog.Out = File.OpenText(@"C:\loglog.txt");

有时我发现在启用“中断所有异常”的调试器下运行应用程序也是一种快速了解问题的方法(Ctrl-D,E -> CLR Exceptions [x] Throw,[ x] 未处理)。

【讨论】:

尼克...现在一切都好...这实际上是我试图记录的一个解构对象的问题。我所看到的只是 WCF 超时......

以上是关于在 WCF 中使用 Serilog的主要内容,如果未能解决你的问题,请参考以下文章

.Core中使用Serilog

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

在 ASP.NET Core 6.0 中使用 Serilog

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

无法使用 Serilog 登录 MS SQL

如何在 .Net Framework 中使用 Serilog 为每个 API 创建日志文件?