2016-03-23 2 views
2

Какова наилучшая практика использования log4net в многопроектном решении. Я устанавливаю log4net Nuget для каждого проекта? Я там способ создать регистратор в инфраструктуре, которая использует log4net? Буду признателен за любые идеи.Использование log4net в решении нескольких проектов

ответ

2

Лично я предпочитаю вводить мои регистраторы через контейнер IoC. Вы можете, но вам это не нужно.

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

И теперь вы можете написать реализацию для каждой библиотеки журналов, которую вы хотите, и при необходимости переключить. Но я никогда не видел проект, в котором мы меняем инфраструктуру регистрации.

My Nlog logger для интерфейса ILogger выше.

using System; 
using NLog; 

namespace Tvinio.Core.Logging.NLog 
{ 
    public class NLogger : ILogger 
    { 
     private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); 

     public void Trace(string message) 
     { 
      Logger.Trace(message); 
     } 

     public void Trace(string format, params object[] args) 
     { 
      Logger.Trace(format, args); 
     } 

     public void Info(string message) 
     { 
      Logger.Info(message); 
     } 

     public void Error(string message) 
     { 
      Logger.Error(message); 
     } 

     public void Error(string message, Exception exception) 
     { 
      Logger.Error(exception, message); 
     } 

     public void Error(Exception exception) 
     { 
      Logger.Error(exception); 
     } 
    } 
} 

Теперь, если вы просто создать реализацию для вашего log4net регистратора и инициализировать экземпляр этого, Visual Studio будет нести ссылки на вас на все ссылочный проект, если они используют эту реализацию.

Кроме того, я настоятельно рекомендую также прочитать об инъекции зависимостей. Вы можете найти статью здесь. http://martinfowler.com/articles/injection.html

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