如何在运行时加载的程序集中使用通用log4net引用?

10 c# reflection logging log4net dynamic-binding

我有一个单线程应用程序,它使用以下命令在运行时加载多个程序集:

objDLL = Assembly.LoadFrom(strDLLs[i]);
Run Code Online (Sandbox Code Playgroud)

我希望以这种方式加载的程序集使用与其余程序集相同的log4net.ILog引用.但似乎运行时加载的程序集完全具有不同的引用,并且需要自己的配置.有没有人知道是否可以在运行时使用.NET接口加载的程序集中使用单个log4net.ILog?

以下是Program类中的log4net.ILog创建和支持代码:

   // Configure log4net using the .config file
   [assembly: log4net.Config.XmlConfigurator(Watch = true)]

   public static class Program
   {
      private static log4net.ILog m_Log = null;

      [STAThread]
      public static void Main(string[] args)
      {
         try
         {
            m_Log = log4net.LogManager.GetLogger(
               MethodBase.GetCurrentMethod().DeclaringType);
         }

      }
   }
Run Code Online (Sandbox Code Playgroud)

JPr*_*ers 2

如果所有程序集都实现一个公共接口,那么您可以拥有一个属性或构造函数参数,允许您将 ILog 的本地实例传递到动态加载的程序集。