【发布时间】:2021-06-30 16:20:49
【问题描述】:
我是 .NET 和 Web 服务开发的新手,所以我不确定如何实现我的要求。
- 我的 web 服务收到一个包含一些数据的 POST 请求,我需要这些数据 生成pdf文件的过程:name_YYYYMMDDHHmmss.pdf。
- 为了监控这一点,我想为每个请求创建一个单独的日志文件,命名为输出文件:name_YYYYMMDDHHmmss.log
- 我想避免将配置对象传递到我需要向日志文件中添加内容的每个类/函数中
我已经成功安装了 Serilog,它可以满足我的需要,但当我收到并发请求时就不行了。我也不确定.NET 中是如何处理同时请求的(到目前为止我还没有编写线程特定的代码),但据我所知,当我更改 Global Logger 文件名时,该对象在所有线程之间共享所以他们都写入同一个文件。
我查看了一堆解决方案,但我没有找到任何适合这个的解决方案,而且似乎大多数人都将所有内容都放在一个文件中......
你有什么线索或提示可以给我吗?我愿意使用 Serilog 以外的东西。
【问题讨论】:
-
当您创建特定的 PDF 时,似乎可以使用自定义接收器,如 this one 和 push a context property。
-
这方面有什么更新吗?
-
@tom 恐怕不会。我对此进行了进一步研究,问题似乎与每个线程中如何共享全局变量有关。在我的应用程序的下一个版本中,计划是在创建新对象时包含对父对象的引用,并让子对象要求父对象生成新日志。这样应该可以将每个请求的日志分开。
标签: asp.net .net concurrency serilog