public ILogQueueWriter GetLogQueueWriter <T>() where T : Log { var type = typeof(T); // Processor exists, return it. if (_queues.ContainsKey(type)) { return(_queues[type]); } // Processor doesn't exist, create it, then return it. lock (_queues) { // Processor was created by the time we got a lock on the collection. if (_queues.ContainsKey(type)) { return(_queues[type]); } // Create a new processor. var queue = new ConcurrentQueue <Log>(); var writer = _logWriterFactory.CreateLogWriter <T>(); var writerQueue = new LogQueueWriter(queue, writer); _queues.Add(type, writerQueue); return(writerQueue); } }
public static ILogWriter GetLogWriter() { if (_logWriter == null) { if (_logWriterFactory == null) { _logWriterFactory = new ConsoleLogWriterFactory(); } _logWriter = _logWriterFactory.CreateLogWriter(); } return(_logWriter); }