Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static readonly ReaderWriterLockSlim _cacheLocker = new ReaderWriterLockSlim(LockRecursionPolicy);
- private static Dictionary<Type, ILog> _loggerCache = new Dictionary<Type, ILog>();
- public static ILog GetLogger(Type type)
- {
- ILog logger;
- _cacheLocker.EnterReadLock();
- try
- {
- if (_loggerCache.TryGetValue(type, out logger))
- {
- return logger;
- }
- }
- finally
- {
- _cacheLocker.ExitReadLock();
- }
- _cacheLocker.EnterWriteLock();
- try
- {
- // double check, as while the read-lock was released, the dictionary could have been modified
- if (_loggerCache.TryGetValue(type, out logger))
- {
- return logger;
- }
- logger = CreateLoggerForType(type);
- _loggerCache.Add(type, logger);
- return logger;
- }
- finally
- {
- _cacheLocker.ExitWriteLock();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement