gpt4 book ai didi

c# - 将输出窗口重定向到日志文件

转载 作者:太空狗 更新时间:2023-10-29 23:26:21 24 4
gpt4 key购买 nike

当我的应用程序启动时,我看到以下行被写入输出窗口:

'MyApp.exe' (Managed (v2.0.50727)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\PresentationFramework.Luna\3.0.0.0__31bf3856ad364e35\PresentationFramework.Luna.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'MyApp.exe' (Managed (v2.0.50727)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\PresentationFramework.Aero\3.0.0.0__31bf3856ad364e35\PresentationFramework.Aero.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'MyApp.exe' (Managed (v2.0.50727)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\PresentationFramework.resources\3.0.0.0_nl_31bf3856ad364e35\PresentationFramework.resources.dll'
'MyApp.exe' (Managed (v2.0.50727)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Data.SqlServerCe\3.5.1.0__89845dcd8080cc91\System.Data.SqlServerCe.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'MyApp.exe' (Managed (v2.0.50727)): Loaded 'C:\WINDOWS\assembly\GAC_32\System.Transactions\2.0.0.0__b77a5c561934e089\System.Transactions.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'MyApp.exe' (Managed (v2.0.50727)): Loaded 'C:\WINDOWS\assembly\GAC_32\System.EnterpriseServices\2.0.0.0__b03f5f7f11d50a3a\System.EnterpriseServices.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'MyApp.exe' (Managed (v2.0.50727)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Data.resources\2.0.0.0_nl_b77a5c561934e089\System.Data.resources.dll'
'MyApp.exe' (Managed (v2.0.50727)): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\System.Xml.Linq\3.5.0.0__b77a5c561934e089\System.Xml.Linq.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled.
'MyApp.exe' (Managed (v2.0.50727)): Loaded 'Anonymously Hosted DynamicMethods Assembly'

我喜欢将这些行添加到我的日志文件(并分配时间戳)以进行一些性能测量。我尝试使用我创建的以下类来做到这一点。

public static class ConsoleLogger
{
public class LogWriter : TextWriter
{
public LogWriter()
{
}

public override Encoding Encoding
{
get { return Encoding.UTF8; }
}

public override void Write(string value)
{
Logger.Info(value);
}
}

public static void RedirectConsoleLog()
{
Console.SetOut(new LogWriter());
}
}

但这行不通。永远不会调用 Write() 方法。有什么想法吗?

最佳答案

这些行是由调试器生成的。 this SDK article 中记录了调试器可以生成的通知类型。 . DLL 加载通知对应于事件 6,LOAD_DLL_DEBUG_EVENT。当您右键单击“输出”窗口时,该列表与您在上下文菜单中找到的内容几乎一致。您感兴趣的“模块加载消息”。

这有几个含义。首先,只有调试器才能获得这些通知,您通常在部署后没有通知的情况下运行您的程序。 Windows 中的一个硬性限制是调试器必须是一个单独的进程,程序不能 self 调试。您计划中的最后一个钉子是 IDE 不支持将现在发送到“输出”窗口的内容重定向到文件中。

除非您编写自己的调试器,否则您无法完成这项工作。技术上可行,下载 MDbg sample .实际上不是。

关于c# - 将输出窗口重定向到日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com