在上文中,進行了簡單的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
求助啊~~~~~~~~~~~~!!!!!。