0

目前我的应用程序(C# 控制台应用程序)使用文件来初始化 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>
4

1 回答 1

2

XmlConfigurator.Configure有一个重载,它将一个流作为参数- 所以您只需从数据库中读取配置,将其转​​换为流,然后将其传递给该方法:

string config = GetConfigFromDb();
using (var MemoryStream ms = new MemoryStream(Encoding.ASCII.GetBytes(config))
{ 
     log4net.Config.XmlConfigurator.Configure(ms);
}
于 2013-06-21T16:03:42.750 回答