我正在创建一个控制台应用程序(exe)并尝试使用log4net记录错误。如果我在main方法中给出以下任何命令,则记录器工作正常:
XmlConfigurator.Configure(new FileInfo(@"filepath\log4net.config"));
或
using (FileStream fs = new FileStream("..\\..\\log4net.config",FileMode.Open))
{ XmlConfigurator.Configure(fs); }
但我需要单独使用log4net.config文件。所以我的问题是 - 如何在我的main方法中引用log4net.config文件(嵌入在exe中)来启用记录器,这样我就不需要拥有除exe之外的单独的log4net配置文件文件?将exe单独移动到其他机器更容易。
注意:log4net.config文件是exe中的嵌入式资源。
答案 0 :(得分:3)
要从嵌入式文件加载配置,最好的方法是使用overload of Configure that takes a stream,例如:
var assembly = Assembly.GetExecutingAssembly(); // or GetEntryAssembly()
var resourceName = "log4net.config";
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
{
XmlConfigurator.Configure(stream);
}