У меня есть приложение .Net Compact Framework 3.5, которое использует Nlog версии 2.0 для регистрации информации, ошибок и фатальных исключений.В большинстве случаев ведение журнала работает должным образом и регистрирует фатальные исключения перед сбоем.Но иногда замечается, что приложение падает, не оставляя никаких признаков ошибки / исключения.
Позвольте мне развить сценарий:
- Приложение создает несколько потоков, всепотокам добавлен блок try-catch в начале их стеков вызовов.И, следовательно, регистрируйте исключения плода перед сбоем.
- Основной поток имеет AppDomain.CurrentDomain.UnhandledException, чтобы регистрировать любые исключения плода в своем стеке вызовов.
- Приложение загружает некоторые сторонние управляемые библиотеки DLL.и выполняет некоторые PInvokes для Wnce dll.
Но я верю, что даже если какая-то сторонняя DLL-библиотека аварийно завершает работу (или, скажем, создает новый поток, который аварийно завершается), я должен хотя бы увидеть некоторые1015 * в журнале, зарегистрированном потоком моего приложения перед выходом.
Ключевые параметры конфигурации Nlog:
a.FileTarget.AutoFlush = true
b.FileTarget.KeepFileOpen = false
c.FileTarget не упакован ни в какую асинхронную оболочку или в какую-либо буферизованную оболочку.
Пожалуйста, дайте мне знать, если я что-то упустил.