Exemplo n.º 1
0
        /// <summary>
        /// Создает экземпляр класса
        /// </summary>
        /// <param name="storageFolder">Имя папки-хранилища для логов</param>
        /// <param name="readOnly">Открыть только для чтения</param>
        /// <param name="bufferedOutput">Буферизированный вывод событий в файл</param>
        /// <param name="flushPeriod">Периодичность сброса буфера, секунды</param>
        /// <param name="logFilePrefix">Префикс лог-файлов</param>
        public EventLink(string storageFolder, bool readOnly, bool bufferedOutput,
                         int flushPeriod, string logFilePrefix)
        {
            if (string.IsNullOrEmpty(storageFolder))
            {
                throw new ArgumentNullException("storageFolder");
            }
            if (flushPeriod < 0)
            {
                throw new ArgumentOutOfRangeException("flushPeriod");
            }
            if (string.IsNullOrEmpty(logFilePrefix))
            {
                throw new ArgumentNullException("logFilePrefix");
            }

            _storageFolder = storageFolder;
            _readOnly      = readOnly;
            _logFilePrefix = logFilePrefix;

            _syncFilesMutex = MutexHelper.CreateSyncFilesMutex(storageFolder);

            _eventIterators = new Dictionary <string, IEnumerator <EventRecord[]> >();

            if (!Directory.Exists(_storageFolder))
            {
                Directory.CreateDirectory(_storageFolder);
            }

            if (!_readOnly)
            {
                // открываем лог
                OpenStorage();

                // внутренний буфер событий
                _eventsQueue = new EventsQueue(bufferedOutput, flushPeriod, FlushBuffer);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Создает экземпляр класса
        /// </summary>
        /// <param name="storageFolder">Имя папки-хранилища для логов</param>
        /// <param name="readOnly">Открыть только для чтения</param>
        /// <param name="bufferedOutput">Буферизированный вывод событий в файл</param>
        /// <param name="flushPeriod">Периодичность сброса буфера, секунды</param>
        /// <param name="logFilePrefix">Префикс лог-файлов</param>
        public EventLink(String storageFolder, Boolean readOnly, Boolean bufferedOutput,
            Int32 flushPeriod, String logFilePrefix)
        {
            if (String.IsNullOrEmpty(storageFolder))
                throw new ArgumentNullException("storageFolder");
            if (flushPeriod < 0)
                throw new ArgumentOutOfRangeException("flushPeriod");
            if (String.IsNullOrEmpty(logFilePrefix))
                throw new ArgumentNullException("logFilePrefix");

            _storageFolder = storageFolder;
            _readOnly = readOnly;
            _logFilePrefix = logFilePrefix;

            _syncFilesMutex = MutexHelper.CreateSyncFilesMutex(storageFolder);

            _eventIterators = new Dictionary<String, IEnumerator<EventRecord[]>>();

            if (!Directory.Exists(_storageFolder))
                Directory.CreateDirectory(_storageFolder);

            if (!_readOnly)
            {
                // открываем лог
                OpenStorage();

                // внутренний буфер событий
                _eventsQueue = new EventsQueue(bufferedOutput, flushPeriod, FlushBuffer);
            }
        }