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)); } }
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); } }
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); } }