在Mono中从Assembly加载log4net配置

本文关键字:log4net 配置 加载 Assembly Mono 中从 | 更新日期: 2023-09-27 18:03:54

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

在log4net文档中,它指出可以通过使用以下(或类似的)行从程序集中加载配置:

[组装:log4net.Config.XmlConfigurator (ConfigFileExtension ="log4net",看= true)]

我已经确保配置文件被移动到构建目录并具有该扩展名。我还确保AssemblyInfo.cs在MonoDevelop中标记为"应用程序定义"。我不知道为什么这不起作用。有人有什么想法吗?

顺便说一句:我已经搜索了所有的地方试图找到一个答案。我还尝试从资源加载配置,也不想工作。

在Mono中从Assembly加载log4net配置

在log4net中使用多个配置文件是可能的,但很尴尬。查看此处的讨论:log4net -使用多个配置文件进行配置

你在你的。exe和。dll中做日志记录吗?

你能用一个配置文件吗?

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

试着把这个问题提炼成一个简单的例子。

  • 确保您的配置文件名为exename.exe。log4net
  • 确保将问题中的AssemblyAttribute放入.exe
  • 的AssemblyInfo.cs中。
  • 确保呼叫LogManager。在调用.DLL
  • 中的任何代码之前,尽快在.exe中GetLogger