Esempio n. 1
0
        protected bool RefreshWriter(LoggingEvent data)
        {
            var filename = _isNeedFileRotate ? _filenameConverter.Convert(data) : _rawFilename;


            if (filename != _lastFilename || !_fileStreamAndWriter.IsInitialized)
            {
                try
                {
                    _fileStreamAndWriter = _filePool.RequestFile(filename, _fileStreamAndWriter, _lastFilename);
                    _lastFilename        = filename;

                    return(true);
                }
                catch (UnauthorizedAccessException ex)
                {
                    if (_errorTracker.CanWriteErrorGetAndUpdate())
                    {
                        _thisClassSupportLogger.Error(ex, "File opening error: " + filename);
                    }
                }
                catch (SecurityException ex)
                {
                    if (_errorTracker.CanWriteErrorGetAndUpdate())
                    {
                        _thisClassSupportLogger.Error(ex, "File opening error: " + filename);
                    }
                }
                catch (PathTooLongException ex)
                {
                    _thisClassSupportLogger.Error(ex, "Fatal file opening error: " + filename);
                    throw new LoggerFileWriteException("Fatal file opening error: " + filename, ex);
                }
                catch (IOException ex)
                {
                    if (_errorTracker.CanWriteErrorGetAndUpdate())
                    {
                        _thisClassSupportLogger.Error(ex, "File opening error: " + filename);
                    }
                }

                return(false);
            }

            return(true);
        }
Esempio n. 2
0
        protected override void Dispose(DisposeReason reason)
        {
            if (!_isDisposed)
            {
                _isDisposed = true;

                if (reason != DisposeReason.Finalize)
                {
                    lock (_lockWrite)
                    {
                        if (_fileStreamAndWriter.IsInitialized)
                        {
                            _fileStreamAndWriter.Flush(false);
                            _fileStreamAndWriter = new FileWriterFilePool.FileStreamAndWriter();
                        }

                        _filePool.Dispose();
                    }
                }
            }
        }