Ошибка входа в C # - PullRequest
       133

Ошибка входа в C #

73 голосов
/ 29 сентября 2008

Я переключаюсь с кодирования на C ++ на C #. Мне нужно заменить мою систему макросов ошибок / отчетов C ++ на что-то похожее в C #.

В моем источнике C ++ я могу написать

LOGERR («Некоторая ошибка»); или же LOGERR («Ошибка с входами% s и% d», stringvar, intvar);

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

Есть ли у кого-нибудь фрагменты кода C # или указатели на примеры, которые делают это основное сообщение об ошибках / ведение журнала?

Редактировать: В то время, когда я задавал этот вопрос, я был действительно новичком в .NET и не знал о System.Diagnostics.Trace. System.Diagnostics.Trace было то, что мне было нужно в то время. С тех пор я использовал log4net в проектах, где требования к журналу были больше и сложнее. Просто отредактируйте этот 500-строчный XML-файл конфигурации, и log4net сделает все, что вам когда-либо понадобится:)

Ответы [ 15 ]

1 голос
/ 01 июля 2016

ExceptionLess - один из самых простых пакетов nuget, доступных для регистрации. Это проект с открытым исходным кодом . Он автоматически обрабатывает необработанные исключения, и доступны опции для журналов вручную . Вы можете войти в онлайн или собственный хост на локальном сервере.

1 голос
/ 28 сентября 2009

Встроенная трассировка в System.Diagnostics прекрасно работает в .NET Framework, и я использую ее во многих приложениях. Однако одна из основных причин, по которой я все еще использую log4net, заключается в том, что во встроенной трассировке .NET Framework отсутствуют многие полезные полнофункциональные приложения, которые уже встроены в log4net.

Например, в .NET Framework не существует хорошего прослушивателя трассировки подвижного файла, кроме того, что в dll VB.NET, который на самом деле не настолько полнофункциональный.

В зависимости от вашей среды разработки, я бы порекомендовал использовать log4net, если сторонние инструменты недоступны, тогда я бы сказал, использовать классы трассировки System.Diagnostics. Если вам действительно нужен лучший appender / tracelistener, вы всегда можете реализовать его самостоятельно.

Например, многие наши клиенты требуют, чтобы мы не использовали библиотеки с открытым исходным кодом при установке на своих корпоративных компьютерах, поэтому в этом случае классы трассировки .NET Framework идеально подходят.

Дополнительно - http://www.postsharp.org/ - это библиотека AOP, которую я изучаю, которая также может помочь в регистрации, как показано здесь в проекте кода: http://www.codeproject.com/KB/dotnet/log4postsharp-intro.aspx.

1 голос
/ 29 сентября 2008

В дополнение к нескольким комментариям, касающимся использования методов System.Diagnostics для ведения журнала, я также хотел бы отметить, что инструмент DebugView очень удобен для проверки результатов отладки при необходимости - если только вам это нужно, приложениям не нужно создавать файл журнала, вы просто запускаете DebugView по мере необходимости.

1 голос
/ 29 сентября 2008

То же самое для log4net. Я добавляю свои два бита, потому что для реального использования имеет смысл взглянуть на некоторые реализации с открытым исходным кодом, чтобы увидеть примеры кода реального мира с некоторыми удобными дополнениями. Для log4net я бы посоветовал мне с головы до головы посмотреть на подтекст . В частности, обратите внимание на биты запуска приложения и assemblyinfo.

0 голосов
/ 29 сентября 2008

Log4Net, как уже говорили другие, довольно распространен и похож на Log4j, который поможет вам, если вы когда-нибудь сделаете какую-либо Java.

У вас также есть возможность использования блока приложения ведения журнала http://www.codeproject.com/KB/architecture/GetStartedLoggingBlock.aspx

...