Журнал исключений и событий в Windows Mobile 6.5.3 CF 3.5

Я пишу приложение для Windows Mobile (6.5.3) на устройстве MC9190 (CF 3.5). Я хочу регистрировать определенные события (например, информацию о входе пользователя) и любые исключения во время выполнения. Как я могу это сделать? Я попытался использовать log4net из этого примера http://breathingtech.com/2009/using-apache-log4net-in-net-compact-framework-projects/ Но CF 3.5 не поддерживается. (http://logging.apache.org/log4net/release/framework-support.html). Как я могу регистрировать события/исключения в своем приложении? Существует ли какая-либо стандартная структура журналов для CF 3.5? Спасибо.


person sjj    schedule 09.05.2013    source источник
comment
Я пытаюсь проверить, работает ли NLog, так как они поддерживают CF 3.5. Но дело в том, что когда я включаю логгер в мобильное приложение, он не настраивается. Все флаги ложные, как будто он не может прочитать мой NLog.config   -  person sjj    schedule 10.05.2013
comment
Как вы думаете, log4net не совместим с FC: logging.apache.org/log4net/ релиз/framework-support.html   -  person josef    schedule 10.05.2013
comment
Microsoft .NET Compact Framework 3.5 там не указан. Я пытался использовать последнюю версию log4net, но постоянно получаю следующие ошибки: Ошибка 1 Тип System.Uri определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «Система, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089». Ошибка 2 Тип System.Xml.XmlElement определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «System.Xml, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089».   -  person sjj    schedule 10.05.2013
comment
Это не будет проблемой. Я бы скачал исходный код log4net и скомпилировал его с помощью CF3.5. OTOH, вам просто нужно добавить недостающие ссылки в ваш проект. Для System.Uri enusre вы ссылаетесь на библиотеки DLL/сборки компактной платформы, см. также мой пост администратора здесь hjgode.de/wp/2009/10/31/. ИСПОЛЬЗОВАНИЕ сборок CF2 возможно в CF3.5, за исключением того, что сборка использует управление версиями strct системных сборок, на которые ссылаются (плохое поведение программирования). В последнем случае вам придется перекомпилировать исходный код.   -  person josef    schedule 10.05.2013
comment
Спасибо за ответ. На самом деле я думал о компиляции исходного кода для CF3.5. Но я просто не мог понять, как это сделать, изучив скрипт сборки. Я очень ценю, если вы могли бы указать мне, как я могу собрать это для CF3.5.   -  person sjj    schedule 10.05.2013


Ответы (1)


Написать простой журнал не так сложно. Независимо от того, какое ведение журнала вы реализуете, вам необходимо добавить строку для каждого исключения или события, которое вы хотите зарегистрировать. Log4Net и другие платформы являются полноценными и поддерживают методы, которые нельзя использовать в Compact Framework (т. е. запись в системный журнал событий). Таким образом, вы должны самостоятельно решить, стоит ли использовать фреймворк, в котором вы не можете использовать большинство функций, поддерживаемых в полном фреймворке.

Есть также несколько более простых инструментов ведения журнала: http://blogs.msdn.com/b/davidklinems/archive/2006/08/17/704662.aspx

См. также: Библиотека ведения журналов для .NET Compact Framework?

Проблема с log4net и его компактной поддержкой фреймворка заключается в том, что в основном он не поддерживается с течением времени (как и в случае с другими библиотеками с открытым исходным кодом).

Получить рабочий log4net для компактного фреймворка очень просто:

  • Откройте файл log4.net src/log4net.vs2008.sln.
  • Добавьте новый проект библиотеки классов SmartDevice (подойдет WM5 SDK и CF2) и назовите его log4netCF.
  • удалить существующий файл class1.cs
  • измените свойства проекта: введите здесь описание изображенияИмя сборки и пространство имен по умолчанию = "log4net"

  • Теперь просто щелкните правой кнопкой мыши каждую папку с исходным кодом в проекте log4net.vs2008 в обозревателе решений и выберите «Копировать», затем щелкните правой кнопкой мыши проект log4netCF и выберите «Вставить». Повторите это для каждой отдельной папки:

    • Appender,
    • Конфигурация,
    • Основной,
    • форматирование даты,
    • Фильтр,
    • Макет,
    • объектрендерер,
    • Плагин,
    • Репозиторий,
    • Утилита
  • также скопируйте отдельные файлы:

    • AssemblyInfo.cs
    • AssemblyVersionInfo.cs
    • GlobalContext.cs
    • ILog.cs
    • Логикалтреадконтекст.cs
    • LogManager.cs
    • MDC.cs
    • NDC.cs
    • ThreadContext.cs

    из log4net.vs2008 в проект log4netCF.

  • удалить Properties/AssemblyInfo.cs в проекте log4netCF
  • добавьте PocketPC;NETCF_2_0;NETCF в параметры сборки log4netCF введите здесь описание изображения

Теперь щелкните правой кнопкой мыши проект log4netCF и выберите «Сборка». Сборка должна пройти без ошибок, и у вас есть работающая сборка Compact Framework 2.0 log4net.

Файл проекта доступен по адресу www.hjgode.de/temp/log4netCF.csproj. Просто загрузите и поместите в вашу Subversion копию log4net в папку src рядом с файлом log4net.vs2008.csproj.

person josef    schedule 10.05.2013
comment
Спасибо за ваше предложение. Я обязательно посмотрю на инструменты ведения журнала. - person sjj; 10.05.2013
comment
Извините за задержку ответа. Огромное спасибо за подробное объяснение. - person sjj; 17.05.2013