/// <summary> /// Load all records stored in database path /// </summary> protected virtual void LoadReports() { if (!Enable) { return; } var files = BacktraceDatabaseFileContext.GetRecords(); foreach (var file in files) { var record = BacktraceDatabaseRecord.ReadFromFile(file); if (record == null) { continue; } record.DatabasePath(DatabaseSettings.DatabasePath); if (!record.Valid()) { try { Debug.Log("Removing record from Backtrace Database path - invalid record."); record.Delete(); } catch (Exception) { Debug.LogWarning(string.Format("Cannot remove file from database. File name: {0}", file.FullName)); } continue; } BacktraceDatabaseContext.Add(record); ValidateDatabaseSize(); record.Unlock(); } }
/// <summary> /// Add new report to BacktraceDatabase /// </summary> public BacktraceDatabaseRecord Add(BacktraceReport backtraceReport, Dictionary <string, object> attributes, MiniDumpType miniDumpType = MiniDumpType.Normal) { if (!_enable || backtraceReport == null) { return(null); } //remove old reports (if database is full) //and check database health state var validationResult = ValidateDatabaseSize(); if (!validationResult) { return(null); } if (miniDumpType != MiniDumpType.None) { string minidumpPath = GenerateMiniDump(backtraceReport, miniDumpType); if (!string.IsNullOrEmpty(minidumpPath)) { backtraceReport.SetMinidumpPath(minidumpPath); } } var data = backtraceReport.ToBacktraceData(attributes); return(BacktraceDatabaseContext.Add(data)); }
/// <summary> /// Load all records stored in database path /// </summary> protected virtual void LoadReports() { if (!Enable) { return; } var files = BacktraceDatabaseFileContext.GetRecords(); foreach (var file in files) { var record = BacktraceDatabaseRecord.ReadFromFile(file); if (record == null) { continue; } if (!BacktraceDatabaseFileContext.IsValidRecord(record)) { BacktraceDatabaseFileContext.Delete(record); continue; } BacktraceDatabaseContext.Add(record); ValidateDatabaseSize(); record.Unlock(); } }
/// <summary> /// Load all records stored in database path /// </summary> private void LoadReports() { var files = BacktraceDatabaseFileContext.GetRecords(); foreach (var file in files) { var record = BacktraceDatabaseRecord.ReadFromFile(file); if (!record.Valid()) { record.Delete(); continue; } BacktraceDatabaseContext.Add(record); ValidateDatabaseSize(); record.Dispose(); } }
public BacktraceDatabaseRecord Add(BacktraceReport backtraceReport, Dictionary <string, string> attributes, MiniDumpType miniDumpType = MiniDumpType.None) { if (!Enable || backtraceReport == null) { return(null); } //remove old reports (if database is full) //and check database health state var validationResult = ValidateDatabaseSize(); if (!validationResult) { return(null); } var data = backtraceReport.ToBacktraceData(attributes, Configuration.GameObjectDepth); return(BacktraceDatabaseContext.Add(data)); }
/// <summary> /// Add new report to BacktraceDatabase /// </summary> public BacktraceDatabaseRecord Add(BacktraceData data, bool @lock = true) { if (data == null || !Enable) { return(null); } //remove old reports (if database is full) //and check database health state var validationResult = ValidateDatabaseSize(); if (!validationResult) { return(null); } var record = BacktraceDatabaseContext.Add(data); if (!@lock) { record.Unlock(); } return(record); }
/// <summary> /// Load all records stored in database path /// </summary> private void LoadReports() { var files = BacktraceDatabaseFileContext.GetRecords(); foreach (var file in files) { var record = BacktraceDatabaseRecord.ReadFromFile(file); if (!record.Valid()) { try { record.Delete(); } catch (Exception) { Debug.LogWarning($"Cannot remove file from database. File name: {file.FullName}"); } continue; } BacktraceDatabaseContext.Add(record); ValidateDatabaseSize(); record.Dispose(); } }
/// <summary> /// Add new report to BacktraceDatabase /// </summary> public BacktraceDatabaseRecord Add(BacktraceData data, bool @lock = true) { if (data == null || !Enable) { return(null); } //remove old reports (if database is full) //and check database health state var validationResult = ValidateDatabaseSize(); if (!validationResult) { return(null); } // validate if record already exists in the database object var hash = BacktraceDatabaseContext.GetHash(data); if (!string.IsNullOrEmpty(hash)) { var existingRecord = BacktraceDatabaseContext.GetRecordByHash(hash); if (existingRecord != null) { BacktraceDatabaseContext.AddDuplicate(existingRecord); return(existingRecord); } } //add built-in attachments var attachments = BacktraceDatabaseFileContext.GenerateRecordAttachments(data); for (int attachmentIndex = 0; attachmentIndex < attachments.Count(); attachmentIndex++) { if (!string.IsNullOrEmpty(attachments.ElementAt(attachmentIndex))) { data.Attachments.Add(attachments.ElementAt(attachmentIndex)); } } // add to fresh new record breadcrumb attachment if (Breadcrumbs != null) { data.Attachments.Add(Breadcrumbs.GetBreadcrumbLogPath()); data.Attributes.Attributes["breadcrumbs.lastId"] = Breadcrumbs.BreadcrumbId().ToString("F0", CultureInfo.InvariantCulture); } // now we now we're adding new unique report to database var record = new BacktraceDatabaseRecord(data) { Hash = hash }; // save record on the hard drive and add it to database context var saveResult = BacktraceDatabaseFileContext.Save(record); if (!saveResult) { // file context won't remove json object that wasn't stored in the previous method // but will clean up attachments associated with this record. BacktraceDatabaseFileContext.Delete(record); return(null); } BacktraceDatabaseContext.Add(record); if (!@lock) { record.Unlock(); } return(record); }