在处理vb.net应用程序时,异常处理不当。这是一个很大的痛苦。所以一个想法闪现,如果有可能创建一个库或服务或某种类型的exe将记录应用程序的所有错误,而无需在主机应用程序的某个全局位置编写一行代码/最小代码。 我知道这听起来有点疯狂,但Windows事件记录器也是如此。所以我想到了同样的道理。让我更清楚一点。假设我有一个应用程序abc.exe,没有一个try catch。我在使用该应用程序时遇到了很多错误。现在我不想深入研究应用程序源代码,而是编写另一个应用程序代码,该应用程序将运行并记录该应用程序的所有未处理异常,包括托管和com两者。
所以请大师帮助我。我知道ApplicationDomain非常有用。我在MSDN博客上遇到了一个名叫Rick的人或类似的东西,但我没有再抓住了。因此,一些简单的源代码或部分代码将会有所帮助。请在答案中添加一些示例代码。
这将是一个很大的帮助。
概要
我想要一个将自己注入任何应用程序的应用程序,其中放置了Injector的程序集。那是如果我有一个应用程序D:\ xyz \ myapp \ abc.exe,如果说我有应用程序作为exe然后如果将它放在myapp文件夹然后执行abc.exe后,通用我的错误记录器应用程序将开始工作并将自身注入当前的应用程序域。如果我将其创建为服务,还要告诉我它是否会被多线程化。
答案 0 :(得分:1)
如果我理解正确,你确实有错误处理错误的应用程序源代码,你可以修改它并重新编译它。
如果是这样,您可能需要查看AppDomain.UnhandledException事件。来自MSDN的引用:此事件提供未捕获异常的通知。它允许应用程序在系统默认处理程序向用户报告异常并终止应用程序之前记录有关异常的信息。
如果你转到链接,那么你需要添加一个代码示例,只需几行代码就可以在你的应用程序的一个文件中进行,所以应该很容易添加。
答案 1 :(得分:0)
此MSDN页面如何:Log Exceptions in Visual Basic准确描述了您的需求。总之,它描述了:
My.Application.Log
使用.NET内置的跟踪侦听器记录异常。UnhandledException
Forms Application事件。FileLogTraceListener
以登录文件“[User] \ Application Data \ [CompanyName] \ [ProductName] \ [ProductVersion] [ApplicationName] .log”。以下是注册VB FileLogTraceListener
:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter" />
</sharedListeners>
</system.diagnostics>
</configuration>