示例#1
0
        private void TemporaryReaderLoop(object state)
        {
            var token = (CancellationToken)state;

            while (!token.IsCancellationRequested)
            {
                try
                {
                    var data = _reader.GetRecord();

                    if (data != null && _logger.Write(data))
                    {
                        _reader.RecordCompleted();
                    }
                    else
                    {
                        token.WaitHandle.WaitOne(_sleepTime);
                    }
                }
                catch (Exception ex)
                {
                    _thisClassSupportLogger.Error(ex, "Error while working with temporary reliable storage of logs");
                    throw;
                }
            }
        }
示例#2
0
        public bool Write(Common.LoggingEvent data)
        {
            if (_isDisposed)
            {
                _thisClassSupportLogger.Error("Attempt to write LoggingEvent in Disposed state");
                return(false);
            }

            if (!_logger.Write(data))
            {
                lock (_writer)
                {
                    _writer.Write(data);
                }
            }
            return(true);
        }
示例#3
0
        public bool Write(LoggingEvent data)
        {
            if (_isDisposed)
            {
                _thisClassSupportLogger.Error("Attempt to write LoggingEvent in Disposed state");
                return(false);
            }

            if (data.Level.Level.CompareTo(LogLevel.Error.Level) >= 0)
            {
                _logger.Write(data);
            }
            else
            {
                if (TryAdd(data))
                {
                    if (ElementCount < _borderOverflow &&
                        Interlocked.CompareExchange(ref _isOverflowed, IS_NOT_OVERFLOWED, IS_OVERFLOWED) == IS_OVERFLOWED)
                    {
                        _thisClassSupportLogger.Info("Async queue now is not overflowed");
                    }
                }
                else
                {
                    if (Interlocked.CompareExchange(ref _isOverflowed, IS_OVERFLOWED, IS_NOT_OVERFLOWED) == IS_NOT_OVERFLOWED)
                    {
                        _thisClassSupportLogger.Info("Async queue overflow detected");
                    }

                    if (_isDiscardExcess)
                    {
                        return(false);
                    }

                    Add(data);
                }
            }

            return(true);
        }
示例#4
0
        public bool Write(LoggingEvent data)
        {
            if (_isDisposed)
            {
                _thisClassSupportLogger.Error("Attempt to write LoggingEvent in Disposed state");
                return(false);
            }

            string pattern = _templateConverter.Convert(data);

            ILoggingEventWriter curWriter = null;

            if (pattern == null || !_match.TryGetValue(pattern, out curWriter))
            {
                curWriter = _default;
            }

            if (curWriter != null)
            {
                return(curWriter.Write(data));
            }

            return(true);
        }
示例#5
0
 /// <summary>
 /// Write the log message
 /// </summary>
 /// <param name="data">Log message</param>
 bool ILoggingEventWriter.Write(LoggingEvent data)
 {
     return(_logger.Write(data));
 }