2016-09-28 2 views
1

Я начинаю новый проект с ServiceStack 4.5. Есть ли способ настроить log4net программно? В документации я нашелServiceStack 4.5 настроить log4net программно

LogManager.LogFactory = new Log4NetFactory(configureLog4Net: true); 

Я добавил это к конструктору класса AppHost. Однако, похоже, предполагается, что вы добавили конфигурацию в файл App.config (я делаю самостоятельный хостинг на службе Windows).

В некоторых других проектах, которые я написал синглтон, а затем использовал Log4Net API, чтобы сделать конфигурацию:

private static void CreateFileAppender(ref Logger bedInventoryLogger, string logFilePath, Level logLevel, int maxFileSizeInMb, bool filterNh) 
    { 
     var filePatternLayout = new PatternLayout 
     { 
      ConversionPattern = "%date; [%thread]; %-5level; %logger; [%type{1}.%method]; - %message%newline" 
     }; 
     filePatternLayout.ActivateOptions(); 
     var bediLogFileAppender = new RollingFileAppender 
     { 
      File = logFilePath, 
      AppendToFile = true, 
      MaximumFileSize = $"{maxFileSizeInMb}MB", 
      MaxSizeRollBackups = 5, 
      RollingStyle = RollingFileAppender.RollingMode.Size, 
      LockingModel = new FileAppender.MinimalLock(), 
      Layout = filePatternLayout, 
      StaticLogFileName = true, 
      Threshold = logLevel 
     }; 
     if (filterNh) 
     { 
      bediLogFileAppender.AddFilter(new LoggerMatchFilter 
      { 
       LoggerToMatch = "NHibernate", 
       AcceptOnMatch = false 
      }); 
      bediLogFileAppender.AddFilter(new LoggerMatchFilter 
      { 
       LoggerToMatch = "NHibernate.SQL", 
       AcceptOnMatch = false 
      }); 
      bediLogFileAppender.AddFilter(new LoggerMatchFilter 
      { 
       LoggerToMatch = "FluentNHibernate", 
       AcceptOnMatch = false 
      }); 
     } 
     bediLogFileAppender.ActivateOptions(); 
     bedInventoryLogger.AddAppender(bediLogFileAppender); 
    } 

Так как я использовал несколько журналов, appenders ETD и хотел отключить NHibernate входа (я использую NHibernate 4 как ORM) и т. Д. Мне было удобнее делать конфигурацию на C#, чем в XML.

Можно ли подключить это с помощью ServiceStack или лучше использовать Log4Net напрямую?

ответ

3

по умолчанию ServiceStack Log4Net адаптер не позволяет вводить настроенный экземпляр Log4Net однако классы адаптера легко копировать и изменять, которые только в этом 2-файлы, которые в основном только переадресовать вызовы на Log4Net:

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