乘风原创程序

  • Log4net.config配置启用常用方法汇总
  • 2020/7/17 10:59:02
  • 在上文中,进行了简单的log4配置搭建,也在实操中启用了log4net的配置。这里做了一下总结。

    方式一:

      在运行时编程配置,代码如下:

    class Program
      {
        private readonly static ILog log = InitILog();
        //private readonly static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        public static void Main(string[] args)
        {
          var gp=log4net.LogManager.GetRepository().Configured;
          log.Debug("测试");
          Console.ReadKey();
        }
    
        public static ILog InitILog() 
        {
          var file = AppDomain.CurrentDomain.BaseDirectory + @"\Config\log4net.config";
          FileInfo info = new FileInfo(file);
          XmlConfigurator.Configure(info);
          return LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        }
      }

    在方法InitLog中,通过获取配置文件的路径(配置文件路径=应用程序基本目录+程序集文件名+扩展名),使用FileInfo,Configure读取配置文件内容,启动log4net配置。

    方式二:

      assembly-level 配置属性,看代码:

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config/log4net.config", Watch =true)]namespace SpringNetIOC
    {
      class Program
      {
        //private readonly static ILog log = InitILog();
        private readonly static ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
        public static void Main(string[] args)
        {
          var gp=log4net.LogManager.GetRepository().Configured;
          log.Debug("测试");
          Console.ReadKey();
        }
    
      }
    }

    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Config/log4net.config", Watch =true)]也可以在Properties/AssemblyInfo.cs== 文件里添加,让程序找到log4net.config文件。

    需要说明一下XmlConfigurator可配置的三个属性。

      a。ConfigFile 配置文件名和路径,包括扩展名,文件相对于程序的根目录。注意,此属性不可和ConfigFileExtension 属性同时使用。

      b。ConfigFileExtension;配置文件的后缀名,缺省默认时'config',此属性不可和ConfigFile属性公用。

    关于ConfigFileExtension属性,特此记录一下,留待后面有了更深入的了解,再做回顾。

      c。Watch(bool属性),如果为true,log4net框架在运行时,监视文件。如果配置文件被修改,则重新加载配置文件。

    方式三:

      app.config中的appSettings配置。看代码:

    <configuration>
      <appSettings>
        <add key="log4net.Config" value="Config/log4net.config"/>
        <add key="log4net.Config.Watch" value="True"/>
      </appSettings>
      <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
      </startup>
    </configuration>

    key为lognet.Config会覆盖assembly XmlConfigurator 配置 中 ConfigFile 指定的值,key为log4net.Config.Watch会覆盖assembly XmlConfigurator配置中Watch的指定值。