public static void AppendLog(RichTextBox box, string message, LogType logType) { int duplicateMessageIndex; const int SEARCH_DEPTH = 2; if (FindDuplicateMessage(message, logType, SEARCH_DEPTH, out duplicateMessageIndex)) { Messages[duplicateMessageIndex].Count++; // Message count was updated. Clear text and rewrite log info. box.Clear(); foreach (var msg in Messages) { AppendLogToBox(box, msg); } } else { // No message count updated. Just add new log to textbox. var msg = new LogMessageData(message, logType); Messages.Add(msg); AppendLogToBox(box, msg); } }
public void LogToScreen(LogMessageData d) { var old = scroll.verticalNormalizedPosition; var msg = Instantiate(messagePrefab, logContainer); msg.SetData(d); //LayoutRebuilder.ForceRebuildLayoutImmediate(msg.GetComponent<RectTransform>()); ScrollToBottomIfNecessary(old); }
private static void AppendLogToBox(RichTextBox box, LogMessageData msg) { string msgText = string.Format("{0}{1}{2}\r\n", msg.Prefix, msg.Message, msg.Count > 1 ? " (" + msg.Count.ToString() + ")" : ""); box.SelectionStart = box.TextLength; box.SelectionLength = 0; box.SelectionColor = msg.Color; box.AppendText(msgText); box.SelectionColor = box.ForeColor; }
public async Task <UsageDataTableResult> GetLogs(Guid telemetryKey, int skip, int take, IEnumerable <Tuple <string, bool> > sortBy, string searchPhrase) { Program program = await this.portalContext.Programs.FirstOrDefaultAsync(x => x.TelemetryKey == telemetryKey).ConfigureAwait(false); if (program == null) { throw new ArgumentException($"Program with key {telemetryKey} does not exist"); } IQueryable <LogMessage> query = this.telemetryContext.LogMessages.Where(x => x.ProgramId == program.Id); int totalCount = await this.telemetryContext.LogMessages.CountAsync(x => x.ProgramId == program.Id).ConfigureAwait(false); if (take == -1) { take = totalCount; } IQueryable <LogMessage> filteredQuery = EntityFilter.Match(query , property => property.Contains(searchPhrase) , new List <Expression <Func <LogMessage, string> > >() { { x => x.Sequence }, { x => x.Message }, { x => x.ProgramVersion }, { x => x.UserName }, }); List <LogMessage> ordered = await ApplyOrderingQuery(sortBy, filteredQuery, skip, take).ConfigureAwait(false); List <LogMessageData> result = new List <LogMessageData>(); foreach (LogMessage item in ordered) { LogMessageData data = new LogMessageData { Timestamp = item.Timestamp, UserName = item.UserName, Message = item.Message , ProgramVersion = item.ProgramVersion , Sequence = item.Sequence , LogLevel = item.Level.ToString() }; result.Add(data); } return(new UsageDataTableResult { TotalCount = totalCount, FilteredCount = totalCount, UsageData = result }); }
static void HandleLogMessage(string condition, string stackTrace, LogType type) { var msgData = new LogMessageData { logType = type, logString = condition, trace = stackTrace, source = Thread.CurrentThread }; if (!_initialized) { _queuedMessages.Enqueue(msgData); } else { _instance.AppendToLogQueue(msgData); } }
public void SetData(LogMessageData d) { messageText.text = $"[{DateTime.Now:T}]: {d.logString}"; var threadText = $"Thread #{d.source.ManagedThreadId}"; if (!string.IsNullOrEmpty(d.source.Name)) { threadText += $" ({d.source.Name})"; } if (d.source.ManagedThreadId == 1) { threadText = "Main thread"; } stackTrace.text = string.Join("\n", d.trace.Split(new [] { '\n' }, StringSplitOptions.RemoveEmptyEntries).Skip(1).Prepend($"Logged from: {threadText}").Select(PadLeft)); SetColor(d.logType); }
public void AppendToLogQueue(LogMessageData d) { m_logQueue.Enqueue(d); }
public LogMessageBusiness() { JobLoggerDbContext dbContext = new JobLoggerDbContext(); _logMessageData = new LogMessageData(dbContext); }
private void clearLogButton_Click(object sender, EventArgs e) { LogMessageData.ClearMessages(); }
internal static void Log(string text, LogType logType = LogType.Info) { LogMessageData.AppendLog(Instance.logTextBox, text, logType); }