У меня есть код MVC5, где мне нужно интегрировать ведение журнала. Может ли кто-нибудь указать мне лучший способ интеграции без внесения изменений в существующий код. У меня есть один подход, когда я думаю об использовании фильтров действий MVC для ведения журнала и DI для ввода регистратора. Любые мысли о других комбинациях?Интеграция регистратора в существующий код
ответ
Вы можете выбрать библиотеку Log4Net для интеграции ведения журнала и использования события Global.asax Application_Error для регистрации всех ошибок приложений в одном месте. Поэтому в вашем существующем коде не потребуется много модификации.
Шаг за шагом руководство
Шаг-1 (Get Log4Net)
Сначала вам нужно скачать Log4Net библиотеку, которую вы можете скачать здесь:
https://logging.apache.org/log4net/download_log4net.cgi
или В качестве альтернативы вы можете выбрать nuget для загрузки пакета Log4Net в существующее приложение. Чтобы сделать это, запустите команду «Консоль диспетчера пакетов», которую вы можете найти в Диспетчере инструментов -> Nuget Package в Visual Studio.
Step-2 (Добавить Log4Net Reference)
После того, как вы загрузили Log4Net любым способом, показанном выше, убедитесь, что у вас есть Log4Net DLL в ваших ссылках проекта. Если он не добавлен, добавьте ссылку на log4net dll.
Шаг 3 (Настройка Log4Net)
Open AssemblyInfo.cs в вашем проекте -> Свойства папки и добавить ниже линии
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Это заставит Log4Net искать конфигурации файл и файл конфигурации будет отслеживаться для изменений.
Шаг 4 (Настройка протоколирования подход)
Теперь укажите конфигурацию Log4Net в web.config Добавить запись configSections для Log4Net под
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
</configuration>
Кроме того, добавьте конфигурацию в файл протокола, здесь я я использую RollingFileAppender
<log4net>
<appender name="RollingErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Logs\\Error\\" />
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
<datePattern value="'Error_'yyyyMMdd'.log'" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="5MB" />
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{dd-MMM-yyyy HH:mm:ss} [%thread] %-5level %file %line %M %logger [%property{NDC}] - %message%newline%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingErrorLogFileAppender" />
</root>
</log4net>
S tep-5 (Catch Application Errors and Log them)
Ваша конфигурация log4net выполнена. Теперь настало время перехватить исключение и записать их в файл журнала. Если вы хотите поймать все исключения приложения в одном месте, вы можете использовать для этого событие Global.asax Application_Error. Создать переменную Log4Net в верхней части Global.asax
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Затем создайте Application_Error событие Global.asax, как показано ниже
protected void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
Response.Clear();
log.Error(exception.Message);
}
Это приведет к регистрации ошибок приложения в папке «Ошибка» в папке «Корневой каталог».
Ссылки
Ниже вы можете посмотреть документацию для настройки Log4Net
https://logging.apache.org/log4net/release/manual/configuration.html
Надежда это поможет !!
Nlog Шаги
1. Установите NLog.Config
Установите NLog с примером конфигурации (nlog.config)
Install-Package NLog.Config
2. Редактирование конфигурации
Включить правила в nlog.c onfig
3. Log исключения
protected void Application_Error(object sender, EventArgs e)
{
var logger = LogManager.GetLogger("application");
Exception exception = Server.GetLastError();
Response.Clear();
logger.Error(exception, "error in application"); //logs full exception
}
- 1. Интеграция асинхронного регистратора с пружиной
- 2. Интеграция reCaptcha в существующий contact.php
- 3. Интеграция синтаксического анализа уведомлений кода в существующий код андроида
- 4. Интеграция GWT в существующий сайт
- 5. Интеграция SVN в существующий проект
- 6. Интеграция freeRTOS в существующий проект
- 7. Интеграция кода JMH в существующий проект maven
- 8. Интеграция страницы Wordpress в существующий HTML-сайт
- 9. Интеграция Angular2 в существующий проект JSF
- 10. Полная интеграция phpbb в существующий сайт
- 11. Интеграция D3-диаграммы в существующий HTML-сайт
- 12. Интеграция идентификатора ASP.NET в существующий DbContext
- 13. Интеграция научного питона в существующий Rails webapp
- 14. Интеграция компьютера Mac в существующий репозиторий TortoiseSVN
- 15. Интеграция AngularJS 1.2 в существующий сайт MVC
- 16. Интеграция WindowBuilder в существующий проект eclipse
- 17. Интеграция SharePoint в существующий веб-сайт
- 18. Интеграция Clojure в существующий Java-проект?
- 19. Поместите PHP-код в существующий PHP код
- 20. Существующий сайт + интеграция углов2 с дополнительным компонентом
- 21. Изменить существующий код в xcode
- 22. Демо-код WxPython - передача объекта регистратора
- 23. optimisng существующий код Python
- 24. Как открыть существующий код?
- 25. Заменить существующий код
- 26. Интеграция ngrx в мой код
- 27. Внедрение регистратора в LLVM
- 28. Создание проекта библиотеки и интеграция в существующий проект в android
- 29. Интеграция моего Javascript, JQuery и CSS в существующий сайт
- 30. Temasys как изменить существующий код
"Интеграция без много изменений"? Хотя ваш вопрос звучит немного шире для меня, но если вы следовали хорошим шаблонам/принципам дизайна/программирования, вы могли бы попытаться найти [украшение] (https://en.wikipedia.org/wiki/Decorator_pattern), который вы кода, например, поэтому вы подчиняетесь [Открытому закрытому принципу] (https://en.wikipedia.org/wiki/Open/closed_principle), тогда как вы можете быть открыты для расширения, но закрыты для модификации. – kayess