Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net TextWriterTraceListener和带有GUID的跟踪文件名_.net_Guid_Trace Listener - Fatal编程技术网

.net TextWriterTraceListener和带有GUID的跟踪文件名

.net TextWriterTraceListener和带有GUID的跟踪文件名,.net,guid,trace-listener,.net,Guid,Trace Listener,我在我的应用程序中使用TextWriterTraceListener(System.Diagnostics)来跟踪异常 应用程序正在终端服务器上运行,如果有许多用户同时使用它,侦听器将开始创建许多跟踪文件,文件名中有随机guid 是否有避免这种行为的可能性或解决方法?我刚刚查看了的文档,页面下方有一个关于1/3的注释 如果试图写入正在使用或不可用的文件,文件名将自动以GUID作为前缀 因此,这似乎是出于设计。如果该文件确实不可用,那么在当前的实现中无法对其执行任何操作。您可以尝试编写TextWr

我在我的应用程序中使用TextWriterTraceListenerSystem.Diagnostics)来跟踪异常

应用程序正在终端服务器上运行,如果有许多用户同时使用它,侦听器将开始创建许多跟踪文件,文件名中有随机guid


是否有避免这种行为的可能性或解决方法?

我刚刚查看了的文档,页面下方有一个关于1/3的注释

如果试图写入正在使用或不可用的文件,文件名将自动以GUID作为前缀

因此,这似乎是出于设计。如果该文件确实不可用,那么在当前的实现中无法对其执行任何操作。您可以尝试编写TextWriterTraceListener的自定义实现,该实现重写相关的Write/WriteLine方法,以便输出到每个用户的文件,文件名更适合您的需要


如果您希望终端服务器上所有用户的所有日志都转到单个文件,那么您几乎肯定需要运行某种“第三方”进程来“拥有”该文件并同步写入该文件,例如由自定义TextWriterTraceListener调用的Windows服务

这并不能解释我所处的情况:使用单个应用程序池,运行单个工作进程,写入指定的文件名,并且仍然滥发多个guid命名的重复日志文件。不能有其他进程试图访问该文件,因为只有一个进程被配置为使用它。@TomW-我也处于同样的情况。我认为IIS正在处理的并行请求是罪魁祸首。也许如果每个线程都有一个日志文件,它的性能会更好。“只有一个用户”与“只有一个进程”不同。net库函数很可能会产生多个进程。我仍然对这种行为感到困惑。当我在笔记本电脑上运行时,每次启动应用程序时,我都会得到一个名为file的新GUID。但当我在我们的测试服务器上运行时,所有内容都会写入一个大文件中。我不知道这是否是dotnet这样做的原因,但通过创建多个文件,每个文件都会获得一个用户的交互,而不是多个用户的交互。