log4net.config配置啟用的幾種方式


在上文中,進行了簡單的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屬性,特此記錄一下,留待后面有了更深入的了解,再做回顧。我碰到的問題時,使用如下代碼:
  
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config",Watch =true)]

始終找不到log4net的配置文件,log4net.LogManager.GetRepository().Configured返回的一直時false,也就是加載log4net配置的時候,加載失敗了。我目前的思考和了解是,ConfigFileExtension 屬性也是讓程序找到log4net.config文件才對,但是它並沒有起到實際的作用。這個問題,不知萬能的網友可有了解的。

求助啊~~~~~~~~~~~~!!!!!。

  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的指定值。

我的問題:

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config",Watch =true)]

使用ConfigFileExtension屬性, 始終找不到log4net的配置文件,log4net.LogManager.GetRepository().Configured返回的一直時false,也就是加載log4net配置的時候,加載失敗了。我目前的思考和了解是,ConfigFileExtension 屬性也是讓程序找到log4net.config文件才對,但是它並沒有起到實際的作用。這個問題,不知萬能的網友可有了解的。我現在認為屬性ConfigFileExtension和ConfigFile功能時一致的,但是我使用ConfigFileExtension,就是獲取不到配置文件,log4net.LogManager.GetRepository().Configured=false

求助啊~~~~~~~~~~~~!!!!!。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM