public LogBufferItemKey( XEventsExportSettings.LogSourceSettings setting, DateTime period, string logFile) { Settings = setting; Period = period; LogFile = logFile; }
public async Task <ExtendedEventsPosition> GetLastPosition( XEventsExportSettings.LogSourceSettings logSettings, string directoryName) { ExtendedEventsPosition position = null; if (LogPositions.TryGetValue(logSettings, out ConcurrentDictionary <string, ExtendedEventsPosition> settingPositions)) { settingPositions.TryGetValue(directoryName, out position); } return(position); }
private async Task LogExportJob( XEventsExportSettings.LogSourceSettings settings, CancellationToken cancellationToken) { while (true) { if (cancellationToken.IsCancellationRequested) { break; } bool bufferBlocked = (_logBuffers.TotalItemsCount >= _settings.Export.Buffer.MaxBufferSizeItemsCount); try { if (!bufferBlocked) { using (XEventExportMaster exporter = new XEventExportMaster( OnSend, null, OnErrorExportDataToBuffer )) { exporter.SetXEventsPath(settings.SourcePath); var target = new ExtendedEventsOnBuffer(_logBuffers, settings.Portion); target.SetLogSettings(settings); exporter.SetTarget(target); await exporter.StartSendEventsToStorage(cancellationToken); } } if (bufferBlocked) { await Task.Delay(100, cancellationToken); } else if (_settings.WatchMode.Use) { await Task.Delay(_settings.WatchMode.Periodicity, cancellationToken); } else { break; } } catch (Exception e) { RaiseOnError(new OnErrorExportSharedBufferEventArgs( new ExportSharedBufferException("Log export job failed.", e, settings))); await Task.Delay(60000, cancellationToken); } } }
public async Task SaveLogsAndPosition( XEventsExportSettings.LogSourceSettings logSettings, ExtendedEventsPosition position, IList <XEventData> rowsData ) { if (position == null) { return; } lock (logSettings.LockObject) { var logFileInfo = new FileInfo(position.CurrentFileData); SaveLogs(logSettings, position, rowsData, logFileInfo); } }
private void SaveLogs( XEventsExportSettings.LogSourceSettings logSettings, ExtendedEventsPosition position, IList <XEventData> rowsData, FileInfo logFileInfo) { var newBufferItem = new LogBufferItem(); newBufferItem.LogPosition = position; foreach (var rowData in rowsData) { newBufferItem.LogRows.TryAdd(new EventKey() { Id = Guid.NewGuid(), File = logFileInfo }, rowData); } LogBuffer.TryAdd(new LogBufferItemKey(logSettings, DateTime.UtcNow, logFileInfo.FullName), newBufferItem); LogPositions.AddOrUpdate(logSettings, (settings) => { var newPositions = new ConcurrentDictionary <string, ExtendedEventsPosition>(); newPositions.AddOrUpdate(logFileInfo.Name, (fileName) => position, (fileName, oldPosition) => position); return(newPositions); }, (settings, logBufferItem) => { logBufferItem.AddOrUpdate(logFileInfo.Name, (fileName) => position, (fileName, oldPosition) => position); return(logBufferItem); }); }
public void SetLogSettings(XEventsExportSettings.LogSourceSettings logSettings) { _logSettings = logSettings; }
public ExportSharedBufferException(string message, Exception innerException, XEventsExportSettings.LogSourceSettings settings) : base(message, innerException) { Settings = settings; }