Example #1
0
                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);
    }
Example #3
0
                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;
                }
Example #4
0
        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
            });
        }
Example #5
0
    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);
        }
    }
Example #6
0
    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);
        }
Example #9
0
 private void clearLogButton_Click(object sender, EventArgs e)
 {
     LogMessageData.ClearMessages();
 }
Example #10
0
 internal static void Log(string text, LogType logType = LogType.Info)
 {
     LogMessageData.AppendLog(Instance.logTextBox, text, logType);
 }