从Mono中的Assembly加载log4net配置

时间:2011-07-28 12:17:01

标签: c# mono log4net monodevelop

我正在Mono中开发一个C#应用程序并尝试使用log4net。当我手动加载配置时,记录器工作得很好但是,我想要更优雅的东西。

在log4net文档中,它声明可以使用以下(或类似)行从程序集加载配置:

[assembly:log4net.Config.XmlConfigurator(ConfigFileExtension =“log4net”,Watch = true)]

我确保配置文件被移动到构建目录并具有该扩展名。我还确保AssemblyInfo.cs在MonoDevelop中标记为“Application Definition”。我不知道为什么这不起作用。有没有人有任何想法?

顺便说一句:我到处寻找了一个想要找到答案的地方。我也尝试从资源加载配置,但也不想工作。

1 个答案:

答案 0 :(得分:0)

使用log4net的多个配置文件是可能的,但很尴尬。请参阅此处的讨论:log4net - configure using multiple configuration files

您是否正在使用.exe和.dll进行日志记录?

您可以使用单个配置文件吗?

请记住文档中的这一部分:“如果使用配置属性,则必须调用log4net以允许它读取属性。对LogManager.GetLogger的简单调用将导致调用程序集上的属性被读取和处理因此,必须在应用程序启动期间尽早进行日志记录调用,当然在加载和调用任何外部程序集之前。“

尝试将问题提炼为一个简单的例子。

  • 确保您的配置文件名称为exename.exe.log4net
  • 确保将您在quesion中的AssemblyAttribute放入.exe
  • 的AssemblyInfo.cs中
  • 在调用.DLL中的任何代码之前,请确保在.exe中调用LogManager.GetLogger ASAP