从数据库初始化log4net设置

时间:2013-06-21 13:49:06

标签: c# sql initialization log4net

目前我的应用程序(C#Console App)使用file来初始化log4net,有没有办法从数据库初始化log4net配置?

我可以将当​​前文件保存为DB(SQL)中的XML,但我不确定如何在我的应用程序中初始化log4net。

编辑:

当前实施:

 _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>

1 个答案:

答案 0 :(得分: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);
}