/// <summary>
            /// Called by base class when it wants to dump a page of objects out of the buffer
            /// </summary>
            /// <param name="pageOfObjects"></param>
            protected override void OnBufferAction(List <LogMessage> pageOfObjects)
            {
                try
                {
                    _initializeLock.EnterUpgradeableReadLock();
                    if (_logInitialized == false)
                    {
                        try
                        {
                            _initializeLock.EnterWriteLock();
                            if (_logInitialized == false)
                            {
                                _logPersister = CoreConfig.Log.ActiveDispatcher;
                                _logPersister.Initialize();
                                _logInitialized = true;
                            }
                        }
                        finally
                        {
                            _initializeLock.ExitWriteLock();
                        }
                    }
                }
                finally
                {
                    _initializeLock.ExitUpgradeableReadLock();
                }

                try
                {
                    _dispatcherLock.EnterWriteLock();
                    _logPersister.PersistMessages(pageOfObjects);
                    pageOfObjects.Clear();
                }
                catch (Exception ex)
                {
                    LastChanceLog(ex);
                }
                finally
                {
                    _dispatcherLock.ExitWriteLock();
                }
            }
Beispiel #2
0
            /// <summary>
            /// Called by base class when it wants to dump a page of objects out of the buffer
            /// </summary>
            /// <param name="pageOfObjects"></param>
            protected override void OnBufferAction(IEnumerable <LogMessage> pageOfObjects)
            {
                try
                {
                    _initializeLock.EnterUpgradeableReadLock();
                    if (_logInitialized == false)
                    {
                        try
                        {
                            _initializeLock.EnterWriteLock();
                            if (_logInitialized == false)
                            {
                                _logPersister = CoreConfig.Log.ActiveDispatcher;
                                _logPersister.Initialize();
                                _logInitialized = true;
                            }
                        }
                        finally
                        {
                            _initializeLock.ExitWriteLock();
                        }
                    }
                }
                finally
                {
                    _initializeLock.ExitUpgradeableReadLock();
                }

                try
                {
                    _dispatcherLock.EnterWriteLock();
                    _logPersister.PersistMessages(pageOfObjects);
                }
                catch
                {
                    _dispatcherLock.ExitWriteLock();
                }
            }