我在我的应用程序中使用 TextWriterTraceListener (System.Diagnostics) 来跟踪一些事情,例如异常,......
该应用程序在终端服务器上运行,如果有许多用户同时使用它,则监听器开始创建许多文件名中带有随机 GUID 的跟踪文件。
是否有可能或解决方法来避免这种行为?
请您参考如下方法:
我刚刚查看了 TextWriterTraceListener 的文档并且在页面下方的 1/3 处有一条注释
If an attempt is made to write to a file that is in use or unavailable, the file name is automatically prefixed by a GUID
因此,这似乎是设计使然。如果该文件确实不可用,那么当前的实现对此无能为力。您可以尝试编写 TextWriterTraceListener 的自定义实现,该实现覆盖相关的 Write/WriteLine 方法,以便输出到每个用户的文件,其名称更适合您的需要。
如果您想要将终端服务器上所有用户的所有日志记录转到一个文件,那么您几乎肯定需要运行某种“拥有”该文件的“第 3 方”进程,并且同步写入它,例如随后由您的自定义 TextWriterTraceListener 调用的 Windows 服务
