Application global Error Logger - PullRequest
       7

Application global Error Logger

0 голосов
/ 05 сентября 2010

При работе над приложением vb.net, в котором исключения обрабатывались плохо. Это была большая боль. Идея так вспыхнула, что, если есть возможность создать библиотеку или службу или какой-нибудь exe-файл, который будет регистрировать все ошибки приложения, не записывая ни одной строки кода / минимального кода в каком-то глобальном местоположении в хост-приложении. Я знаю, это звучит немного безумно, но Windows Event Logger делает то же самое. Так что я думал о том же. Позвольте мне сделать меня более ясным. Скажем, у меня есть приложение abc.exe, без единой попытки поймать. Я сталкиваюсь с большим количеством ошибок при использовании этого приложения. Теперь вместо того, чтобы копаться в исходном коде приложения, я хочу написать другое приложение, которое будет запускать и регистрировать все необработанные исключения из этого приложения, в том числе управляемые и com оба.

Итак, гуру просят помочь мне. Я знаю, что ApplicationDomain полезен. Я наткнулся на парня по имени Рик или что-то подобное в блоге MSDN, но я больше не хватался. Так что некоторый легкий источник или часть кода будут полезны. Пожалуйста, добавьте пример кода с вашими ответами.

Было бы здорово помочь.

РЕЗЮМЕ

Я хочу приложение, которое внедрит себя в любое приложение, в которое помещается сборка Injector. То есть, если у меня есть приложение D: \ xyz \ myapp \ abc.exe, если, скажем, у меня было приложение в качестве exe, то если поместить его в папку myapp, то после выполнения abc.exe универсальное приложение для регистрации ошибок будет работать. и внедрить себя в текущий домен приложения. Также скажите мне, будет ли он сделан многопоточным, если я создам его как сервис.

Ответы [ 2 ]

1 голос
/ 05 сентября 2010

Если я правильно понимаю, у вас есть источник приложения с плохой обработкой ошибок, и вы сможете изменить его и заново скомпилировать.

Если это так, вы можете посмотретьв событии AppDomain.UnhandledException .Цитата из MSDN: Это событие предоставляет уведомление о необработанных исключениях.Это позволяет приложению регистрировать информацию об исключении до того, как системный обработчик по умолчанию сообщит об исключении пользователю и завершит работу приложения.

Если вы перейдете по ссылке, есть пример кода, который вам нужнодобавить, и это всего лишь несколько строк кода, которые могут быть помещены в один файл в вашем приложении, поэтому их должно быть достаточно легко добавить.

0 голосов
/ 05 сентября 2010

Эта страница MSDN Практическое руководство: Регистрация исключений в Visual Basic точно описывает, что вам нужно.Таким образом, он описывает:

  • Как использовать Visual Basic My.Application.Log для регистрации исключений с помощью встроенных прослушивателей трассировки .NET.
  • Как зарегистрировать приложение UnhandledException Formsсобытие в приложениях VB.
  • Как зарегистрировать Visual Basic FileLogTraceListener для входа в файл "[Пользователь] \ Application Data \ [CompanyName] \ [ProductNers] \ [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>
...