2013-06-21 3 views
0

В настоящее время мое приложение (приложение консоли C#) использует файл для инициализации log4net, есть ли способ инициализировать конфигурации log4net из базы данных?Инициализировать параметры log4net из базы данных

Я могу либо сохранить текущий файл как XML в DB (SQL), но я не уверен, как инициализировать log4net из того, что в моем приложении.

EDIT:

Текущая реализация:

_logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 
      var file = new FileInfo(System.Configuration.ConfigurationManager.AppSettings["log4net.Config"]); 
      log4net.Config.XmlConfigurator.Configure(file); 

AppSettings имеет место физического файла, который имеет следующее:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file type="log4net.Util.PatternString" value="c:\%property{LogName}" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <staticLogFileName value="false" /> 
     <datePattern value="MM-dd-yyyy'.log'" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level – %message%newline" /> 
     </layout> 
    </appender> 

    <root> 
     <appender-ref ref="FileAppender"/> 

    </root> 
    </log4net> 
+0

Ну какой код вы используете для создания экземпляра log4net на данный момент? – Arran

+0

Что вы пробовали? – JSJ

+0

@Arran - См. Обновления –

ответ

2

Там в overload to XmlConfigurator.Configure that takes a stream as the parameter - так что вы только что прочитали ваш конфигурационный из базы данных, превратить его в поток и передать его этому методу:

string config = GetConfigFromDb(); 
using (var MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(config)) 
{ 
    log4net.Config.XmlConfigurator.Configure(ms); 
} 
+0

Спасибо! именно то, что я искал .. –

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