2016-05-02 2 views
0

У меня есть код MVC5, где мне нужно интегрировать ведение журнала. Может ли кто-нибудь указать мне лучший способ интеграции без внесения изменений в существующий код. У меня есть один подход, когда я думаю об использовании фильтров действий MVC для ведения журнала и DI для ввода регистратора. Любые мысли о других комбинациях?Интеграция регистратора в существующий код

+1

"Интеграция без много изменений"? Хотя ваш вопрос звучит немного шире для меня, но если вы следовали хорошим шаблонам/принципам дизайна/программирования, вы могли бы попытаться найти [украшение] (https://en.wikipedia.org/wiki/Decorator_pattern), который вы кода, например, поэтому вы подчиняетесь [Открытому закрытому принципу] (https://en.wikipedia.org/wiki/Open/closed_principle), тогда как вы можете быть открыты для расширения, но закрыты для модификации. – kayess

ответ

1

Вы можете выбрать библиотеку 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 

Надежда это поможет !!

+0

TS просит NLog? ;) (см. теги) – Julian

+0

Он также просил «Любые мысли о других комбинациях»? –

+0

Это относится к большей части времени к предыдущему предложению, поэтому «фильтры действий для ведения журнала и DI для ввода журнала» – Julian

0

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 

} 
Смежные вопросы