目前我的应用程序(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>
答案 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);
}