logging-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bode...@apache.org
Subject svn commit: r1167153 - /logging/log4net/trunk/src/Core/DefaultRepositorySelector.cs
Date Fri, 09 Sep 2011 13:25:00 GMT
Author: bodewig
Date: Fri Sep  9 13:25:00 2011
New Revision: 1167153

URL: http://svn.apache.org/viewvc?rev=1167153&view=rev
Log:
add log4net.Config.Watch appsetting to configure as comanion to log4net.Config to determine
whether the config is going to be watched.  Submitted by Uri Goldstein.  LOG4NET-246

Modified:
    logging/log4net/trunk/src/Core/DefaultRepositorySelector.cs

Modified: logging/log4net/trunk/src/Core/DefaultRepositorySelector.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/src/Core/DefaultRepositorySelector.cs?rev=1167153&r1=1167152&r2=1167153&view=diff
==============================================================================
--- logging/log4net/trunk/src/Core/DefaultRepositorySelector.cs (original)
+++ logging/log4net/trunk/src/Core/DefaultRepositorySelector.cs Fri Sep  9 13:25:00 2011
@@ -24,6 +24,7 @@
 using System;
 using System.Collections;
 using System.Configuration;
+using System.IO;
 using System.Reflection;
 
 using log4net.Config;
@@ -696,7 +697,42 @@ namespace log4net.Core
 						LogLog.Warn(declaringType, "Exception getting ApplicationBaseDirectory. appSettings
log4net.Config path ["+repositoryConfigFile+"] will be treated as an absolute URI", ex);
 					}
 
-					// As we are not going to watch the config file it is easiest to just resolve it as
a 
+                    // Determine whether to watch the file or not based on an app setting
value:
+				    bool watchRepositoryConfigFile = false;
+				    Boolean.TryParse(SystemInfo.GetAppSetting("log4net.Config.Watch"), out watchRepositoryConfigFile);
+
+					if (watchRepositoryConfigFile)
+					{
+ 						// As we are going to watch the config file it is required to resolve it as a 
+ 						// physical file system path pass that in a FileInfo object to the Configurator
+                        string repositoryConfigFilePath = repositoryConfigFile;
+                        if (applicationBaseDirectory != null)
+                        {
+                            repositoryConfigFilePath = Path.Combine(applicationBaseDirectory,
repositoryConfigFile);
+                        }
+						FileInfo repositoryConfigFileInfo = null;
+						try
+						{
+							repositoryConfigFileInfo = new FileInfo(repositoryConfigFilePath);
+						}
+						catch (Exception ex)
+						{
+                            LogLog.Error(declaringType, "DefaultRepositorySelector: Exception
while parsing log4net.Config file physical path [" + repositoryConfigFilePath + "]", ex);
+						}
+						try
+						{
+                            LogLog.Debug(declaringType, "Loading and watching configuration
for default repository from AppSettings specified Config path [" + repositoryConfigFilePath
+ "]");
+
+                            XmlConfigurator.ConfigureAndWatch(repository, repositoryConfigFileInfo);
+						}
+						catch (Exception ex)
+						{
+                            LogLog.Error(declaringType, "DefaultRepositorySelector: Exception
calling XmlConfigurator.ConfigureAndWatch method with ConfigFilePath [" + repositoryConfigFilePath
+ "]", ex);
+						}
+					}
+					else
+					{
+                    // As we are not going to watch the config file it is easiest to just
resolve it as a 
 					// URI and pass that to the Configurator
 					Uri repositoryConfigUri = null;
 					try
@@ -730,6 +766,7 @@ namespace log4net.Core
 							LogLog.Error(declaringType, "Exception calling XmlConfigurator.Configure method with
ConfigUri ["+repositoryConfigUri+"]", ex);
 						}
 					}
+                    }
 				}
 			}
 		}



Mime
View raw message