Beispiel #1
0
		internal void RecalculateLogLevels(LogWriter logWriter)
		{
			lock(_logWritersPerLogger)
			{
				foreach (var logger in _logWritersPerLogger.Keys)
				{
					List<LogWriter> logWriters;
					if (!_logWritersPerLogger.TryGetValue(logger, out logWriters))
					{
						throw new Exception("Unable to find dictionary key - mutli threading issue?");
					}
					if (logWriter.GetLogLevel(logger) == LogLevel.None)
					{
						if (logWriters.Contains(logWriter))
						{
							logWriters.Remove(logWriter);
						}
					}
					else
					{
						if (!logWriters.Contains(logWriter))
						{
							logWriters.Add(logWriter);
						}
					}
				}
			}

			foreach (var logger in _loggers.Values)
			{
				logger.SetMinimumLogLevel(GetMinimumLogLevel(logger));
			}
		}
Beispiel #2
0
		public void AddLogWriter(LogWriter logWriter)
		{
			if (logWriter == null)
				throw new ArgumentNullException("LogWriter must not be null");

			lock (_logWriters)
			{
				if (_logWriters.Contains(logWriter))
					throw new ArgumentException("LogWriter has already been added");

				lock (_loggers)
				{
					if (_loggers.Count != 0)
						throw new ArgumentOutOfRangeException("LogWriter cannot be added once the first Logger has been created.");
				}

				_logWriters.Add(logWriter);
			}
		}
Beispiel #3
0
		private void AddToLogWritersPerLogger(Logger logger, LogWriter logWriter, LogLevel logLevel)
		{
			lock(_logWritersPerLogger)
			{
				List<LogWriter> logWriters;
				if (!_logWritersPerLogger.ContainsKey(logger))
				{
					logWriters = new List<LogWriter>(1);
					_logWritersPerLogger.Add(logger, logWriters);
				}
				else
				{
					if (!_logWritersPerLogger.TryGetValue(logger, out logWriters))
					{
						throw new Exception("Unable to find dictionary key - mutli threading issue?");
					}
				}
				logWriters.Add(logWriter);
			}
		}