text: """
  Module to use log4net from python
  """
  import os
  import clr
  import sys
  
  import Net2Scripting.settings as settings
  
  # Add path lib to search path
  LOG4NET_LIB_DIR = os.path.join(settings.LIB_DIR, 'log4netdll')
  if LOG4NET_LIB_DIR not in sys.path:
      sys.path.append(LOG4NET_LIB_DIR)
  
  clr.AddReference('log4net')
  import log4net as log4net
  from log4net.Config import XmlConfigurator
  clr.AddReference('System.Xml')
  from System.Xml import XmlDocument
  
  
  class Log4NetError(Exception):
      """Log4Net exception class
      """
      pass
  
  
  class Log4Net(object):
      """Class that offers log4net usage, taking its config from an xml file
      """
  
      @classmethod
      def read_config(cls, config_file):
          """Read and process config file
          """
          if not os.path.isfile(config_file):
              raise Log4NetError('Failed to find config file "%s"' % config_file)
  
          # Read document
          doc = XmlDocument()
          try:
              doc.Load(config_file)
          except Exception as e:
              raise Log4NetError(str(e))
  
          # Obtain 1st element with log4net tag
          for element in doc.GetElementsByTagName('log4net'):
              XmlConfigurator.Configure(element)
              break
  
      @classmethod
      def get_logger(cls, name):
          """Obtain logger instance
          """
          return log4net.LogManager.GetLogger(name)
  
      @classmethod
      def get_file_appender_logfile(cls):
          """Obtain file appender log file
          """
          for appender in log4net.LogManager.GetRepository().GetAppenders():
              if isinstance(appender, log4net.Appender.FileAppender):
                  return str(appender.File)
          return None
  