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); }
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(); } } } }