可能重复:
Correct way to reference log4net DLL in WinForms application
我的WinForms解决方案有2个项目:1个用于项目特定代码,另一个用于可重用代码。我从两个项目中引用log4net.dll。我已将dll保存在主解决方案文件夹下的libs文件夹中,并从两个项目中引用此DLL。注意:这是一个物理文件夹,而不是解决方案文件夹。
我想在单个xml文件中指定log4net配置设置,这两个项目都可以读取。
如果我不想对xml文件名和路径进行硬编码,有哪些选项?
(可选问题)假设我不想遵循使用完全限定类名作为记录器名称的约定;而是在运行时我想从xml文件中读取每个类的记录器名称(目的是隔离外部文件中的父子记录器关系并在以后决定);那有什么选择呢?
我正在使用C#2.0。
虽然这听起来像很多问题,但对于经验丰富的log4net开发人员来说,它们应该很简单!我想是这样的!
编辑1:我不想在app.config文件中混合使用log4net config。
感谢。
答案 0 :(得分:1)
我想我找到了解决方案。
我现在将XML文件保存在Project的项目文件夹中,该文件夹标记为Startup Project。在Project的File属性中,我将“Copy to Output Directory”设置为“Copy if newer”
我使用程序集级别属性将log4net XmlConfiguration指向此XML文件:
[assembly:log4net.Config.XmlConfigurator(ConfigFile =“LogConfig.xml”,Watch = true)]
目前我已在上述属性中对文件名进行了硬编码。如果以后我不想硬编码,我可以在app.config文件的appSettings部分插入一个log4net.Config键。
如果我想从xml文件中读取每个类的记录器名称,我可以在app.config文件中为每个完全限定的类名插入适当的键,然后从那里读取。
如果有人有其他想法,请发帖。