Example #1
0
        /// <summary>
        /// Add new section to running log card
        /// </summary>
        /// <param name="severity">Optional: severity of the section</param>
        /// <param name="title">Optional: Title of the section</param>
        /// <param name="text">Optional: Summary of the section</param>
        /// <param name="eventTitle">Optional: Section event title</param>
        /// <param name="eventSubtitle">Optional: Section event subtitle</param>
        /// <param name="eventSummary">Optional: Section event summary</param>
        /// <param name="markdown">If any text has markdown</param>
        public void CreateNewMessageCard(LogSeverity?severity = null, string title = null, string text = null, string eventTitle = null, string eventSubtitle = null, string eventSummary = null, bool?markdown = null)
        {
            if (severity.HasValue && severity.Value == LogSeverity.Error)
            {
                _hasException = true;
            }
            if (severity.HasValue && severity.Value == LogSeverity.Warn && !_hasException)
            {
                _hasWarning = true;
            }

            var section = new O365ConnectorCardSection(title, text, eventTitle, eventSubtitle, eventSummary, null, null, markdown);

            if (_card.Sections == null || !_card.Sections.Any())
            {
                _card.Sections = new List <O365ConnectorCardSection> {
                    section
                };
            }
            else
            {
                _card.Sections.Add(section);
            }

            _currentSection = section;
        }
Example #2
0
        private void _searchButton_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                string module = _moduleComboBox.Text.Length > 0 ? _moduleComboBox.Text : null;

                LogSeverity?logSeverity = null;
                if (!String.IsNullOrEmpty(_severityComboBox.Text))
                {
                    logSeverity = (LogSeverity)Enum.Parse(typeof(LogSeverity), _severityComboBox.Text, true);
                }

                var result = Proxies.LogService.GetLogEntries(_startDatePicker.Value.Date, _endDatePicker.Value.Date.AddDays(1), _maxLogEntries, module, logSeverity).Result;

                _maxEntriesReachedLabel.Visible = result.MaxEntriesReached;
                if (result.MaxEntriesReached)
                {
                    _maxEntriesReachedLabel.Text = String.Format(CultureInfo.CurrentCulture, "Warning: only the first {0} log messages are displayed, more are available.", result.LogEntries.Count);
                }

                _logListControl.LogEntries = new SortableBindingList <LogEntry>(result.LogEntries);
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
Example #3
0
 public void Log(string message, LogSeverity severity, Exception exception)
 {
     LastMessageSeverity = severity;
     LastMessage = message;
     LastException = exception;
     MessagesReceived++;
 }
Example #4
0
 public void Handle(LogSeverity severity, Exception exception, string format, params object[] args)
 {
     LastMessageSeverity = severity;
     LastMessage         = string.Format(format, args);
     LastException       = exception;
     MessagesHandled++;
 }
 public void Log(string message, LogSeverity severity, Exception exception)
 {
     LastMessageSeverity = severity;
     LastMessage         = message;
     LastException       = exception;
     MessagesReceived++;
 }
Example #6
0
        public async Task <IActionResult> GetLatestLogs(
            [FromQuery] int pageSize         = 200,
            [FromQuery] int pageNum          = 1,
            [FromQuery] LogCategory?category = null,
            [FromQuery] LogSeverity?severity = null,
            [FromQuery] string sortBy        = "Timestamp",
            [FromQuery] bool sortDescending  = true)
        {
            var pageInfo = new PageInfo
            {
                SortBy         = sortBy,
                SortDescending = sortDescending,
                PageSize       = pageSize,
                PageNum        = pageNum
            };

            var result = await _adminLogService.GetLatestLogEntries(pageInfo, category, severity);

            var dtos = new List <Dto.LogEntry>();

            foreach (var entry in result.Data)
            {
                dtos.Add(new Dto.LogEntry(entry));
            }

            return(Ok(new DataList <Dto.LogEntry>(dtos, result.PageInfo)));
        }
Example #7
0
        /// <summary>
        /// Gets the log entries.
        /// </summary>
        /// <param name="pageInfo">The page information.</param>
        /// <param name="category">The category.</param>
        /// <param name="serverity">The serverity.</param>
        /// <param name="timestampStart">The timestamp start.</param>
        /// <param name="timestampEnd">The timestamp end.</param>
        /// <returns>A paged list of log entries.</returns>
        public async Task <DataList <LogEntry> > GetLogEntries(PageInfo pageInfo,
                                                               LogCategory?category,
                                                               LogSeverity?serverity,
                                                               DateTime timestampStart,
                                                               DateTime timestampEnd)
        {
            var where = "WHERE Timestamp >= @TimetampStart AND Timestamp <= @TimetampEnd ";

            var parameters = new DynamicParameters();

            parameters.Add("@TimetampStart", timestampStart);
            parameters.Add("@TimetampEnd", timestampEnd);

            if (category != null)
            {
                where += "AND Category = @Category ";
                parameters.Add("@Category", (int)category);
            }

            if (serverity != null)
            {
                where += "AND Severity = @Severity ";
                parameters.Add("@Severity", (int)serverity);
            }

            var orderBy = "Timestamp" + (pageInfo.SortDescending ? " DESC" : "");
            var data    = await GetListPagedAsync <LogEntry>(where, parameters, orderBy, pageInfo.PageNum, pageInfo.PageSize);

            pageInfo.TotalRecords = (int) await GetRecordCount <LogEntry>(where, parameters);

            return(new DataList <LogEntry>(data, pageInfo));
        }
Example #8
0
        public static async Task Log(string message, LogSeverity severity = LogSeverity.Info, LogCat cat = LogCat.Default, bool logConsole = true, bool logFile = true)
        {
            try
            {
                _logPath     = _logPath ?? Path.Combine(SettingsManager.RootDirectory, "logs");
                _logSeverity = _logSeverity ?? SettingsManager.Get("config", "logSeverity").ToSeverity();
                if ((int)_logSeverity > (int)severity)
                {
                    return;
                }

                var file = Path.Combine(_logPath, $"{cat}.log");

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

                var cc = Console.ForegroundColor;

                switch (severity)
                {
                case LogSeverity.Critical:
                case LogSeverity.Error:
                    Console.ForegroundColor = ConsoleColor.Red;

                    break;

                case LogSeverity.Warning:
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    break;

                case LogSeverity.Info:
                    Console.ForegroundColor = ConsoleColor.White;
                    break;

                case LogSeverity.Verbose:
                case LogSeverity.Debug:
                    Console.ForegroundColor = ConsoleColor.DarkGray;
                    break;
                }

                if (logFile)
                {
                    await File.AppendAllTextAsync(file, $"{DateTime.Now,-19} [{severity,8}]: {message}{Environment.NewLine}");
                }

                if (logConsole)
                {
                    Console.WriteLine($"{DateTime.Now,-19} [{severity,8}] [{cat}]: {message}");
                }
                Console.ForegroundColor = cc;
            }
            catch
            {
                // ignored
            }
        }
Example #9
0
        public string Execute(LogSeverity?severity = null)
        {
            if (severity.HasValue)
            {
                Api.Shared.LogSeverity = severity.Value;
            }

            return("Current log severity is: " + Api.Shared.LogSeverity);
        }
Example #10
0
        /// <summary>
        /// Constructs a filter string based on log name, severity, type of log, before and after timestamps
        /// and other advanced filter.
        /// </summary>
        protected string ConstructLogFilterString(string logName, LogSeverity?logSeverity, string selectedType,
                                                  DateTime?before, DateTime?after, string otherFilter)
        {
            string andOp        = " AND ";
            string filterString = "";

            if (!string.IsNullOrWhiteSpace(logName))
            {
                // By setting logName = LogName in the filter, the list request
                // will only return log entry that belongs to LogName.
                // Example: logName = "Name of log".
                filterString = $"logName = '{logName}'{andOp}".Replace('\'', '"');
            }

            if (logSeverity.HasValue)
            {
                // Example: severity >= ERROR.
                string severityString = Enum.GetName(typeof(LogSeverity), logSeverity.Value).ToUpper();
                filterString += $"severity = {severityString}{andOp}";
            }

            if (selectedType != null)
            {
                // Example: resource.type = "gce_instance".
                filterString += $"resource.type = '{selectedType}'{andOp}".Replace('\'', '"');
            }

            if (before.HasValue)
            {
                // Example: timestamp <= "2016-06-27T14:40:00-04:00".
                string beforeTimestamp = XmlConvert.ToString(before.Value, XmlDateTimeSerializationMode.Local);
                filterString += $"timestamp <= '{beforeTimestamp}'{andOp}".Replace('\'', '"');
            }

            if (after.HasValue)
            {
                // Example: timestamp >= "2016-06-27T14:40:00-04:00".
                string afterTimestamp = XmlConvert.ToString(after.Value, XmlDateTimeSerializationMode.Local);
                filterString += $"timestamp >= '{afterTimestamp}'{andOp}".Replace('\'', '"');
            }

            if (otherFilter != null)
            {
                filterString += otherFilter;
            }

            // Strip the "AND " at the end if we have it.
            if (filterString.EndsWith(andOp))
            {
                filterString = filterString.Substring(0, filterString.Length - andOp.Length);
            }

            return(filterString);
        }
Example #11
0
        public static LogEntry Create(string message, Exception error = null, LogSeverity?severity = null)
        {
            if (severity == null)
            {
                severity = error == null
                    ? LogSeverity.Info
                    : LogSeverity.Error;
            }

            var data = error == null
                ? new object[] { message }
                : new object[] { message, error };

            return(new LogEntry(severity.Value, data));
        }
Example #12
0
        public async Task Get_User_Logs_By_Date_Window_And_Severity_Async_Test()
        {
            // Arrange
            DateTime?start = newlog.DateCreated,
                    end    = newlog.DateCreated;

            LogSeverity?severity = newlog.Severity;

            // Act
            var existedLogs = await logService.GetUserLogsAsync(userId, start, end, severity, null);

            // Assert
            Assert.NotNull(existedLogs);
            Assert.NotEmpty(existedLogs);
        }
Example #13
0
        public static async Task Log(string message, LogSeverity severity = LogSeverity.Info, LogCat cat = LogCat.Default, bool logConsole = true, bool logFile = true)
        {
            try
            {
                _logPath     = _logPath ?? Path.Combine(SettingsManager.DataDirectory, "logs");
                _logSeverity = _logSeverity ?? SettingsManager.Settings.Config.LogSeverity.ToSeverity();
                if ((int)_logSeverity > (int)severity)
                {
                    return;
                }

                var file = Path.Combine(_logPath, $"{cat}.log");

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

                // var cc = Console.ForegroundColor;

                logFile = logFile && !SettingsManager.Settings.Config.DisableLogIntoFiles;

                if (logConsole)
                {
                    var time = DateTime.Now.ToString("HH:mm:ss");
                    var msg  = $"{time} [{severity,8}] [{cat,13}]: {message}";
                    await SystemLogFeeder.FeedMessage(msg, severity == LogSeverity.Critical || severity == LogSeverity.Error);

                    if (!SettingsManager.Settings.Config.RunAsServiceCompatibility)
                    {
                        try
                        {
                            switch (severity)
                            {
                            case LogSeverity.Critical:
                            case LogSeverity.Error:
                                Console.ForegroundColor = ConsoleColor.Red;

                                break;

                            case LogSeverity.Warning:
                                Console.ForegroundColor = ConsoleColor.Yellow;
                                break;

                            case LogSeverity.Info:
                                Console.ForegroundColor = ConsoleColor.White;
                                break;

                            case LogSeverity.Verbose:
                            case LogSeverity.Debug:
                                Console.ForegroundColor = ConsoleColor.DarkGray;
                                break;

                            case LogSeverity.Module:
                                Console.ForegroundColor = ConsoleColor.Gray;
                                break;
                            }

                            Console.WriteLine(msg);
                        }
                        catch
                        {
                            //ignore
                        }
                    }
                }
                if (logFile)
                {
                    await File.AppendAllTextAsync(file, $"{DateTime.Now,-19} [{severity,8}]: {message}{Environment.NewLine}");
                }
            }
            catch
            {
                // ignored
            }
        }
Example #14
0
        public static async Task Log(string message, LogSeverity severity = LogSeverity.Info, LogCat cat = LogCat.Default, bool logConsole = true, bool logFile = true)
        {
            try
            {
                _logPath     = _logPath ?? Path.Combine(SettingsManager.DataDirectory, "logs");
                _logSeverity = _logSeverity ?? SettingsManager.Settings?.Config.LogSeverity.ToSeverity() ?? LogSeverity.Module;
                if ((int)_logSeverity > (int)severity)
                {
                    return;
                }

                var file = Path.Combine(_logPath, (SettingsManager.Settings?.Config.UseSingleFileForLogging ?? false) ? "Default.log" : $"{cat}.log");

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

                // var cc = Console.ForegroundColor;

                logFile = logFile && !(SettingsManager.Settings?.Config.DisableLogIntoFiles ?? false);

                if (logConsole)
                {
                    var time = DateTime.Now.ToString("HH:mm:ss");
                    var msg  = $"{time} [{severity,8}] [{cat,13}]: {message}";
                    if (severity == LogSeverity.Critical || severity == LogSeverity.Error)
                    {
                        await SystemLogFeeder.FeedMessage($"```diff\n-{msg}\n```", severity);
                    }
                    else if (severity == LogSeverity.Warning)
                    {
                        await SystemLogFeeder.FeedMessage($"```diff\n+{msg}\n```", severity);
                    }
                    else
                    {
                        await SystemLogFeeder.FeedMessage(msg, severity);
                    }

                    if (!SettingsManager.Settings?.Config.RunAsServiceCompatibility ?? true)
                    {
                        try
                        {
                            switch (severity)
                            {
                            case LogSeverity.Critical:
                            case LogSeverity.Error:
                                Console.ForegroundColor = ConsoleColor.Red;
                                break;

                            case LogSeverity.Warning:
                                Console.ForegroundColor = ConsoleColor.Yellow;
                                break;

                            case LogSeverity.Info:
                                Console.ForegroundColor = ConsoleColor.White;
                                break;

                            case LogSeverity.Verbose:
                            case LogSeverity.Debug:
                                Console.ForegroundColor = ConsoleColor.DarkGray;
                                break;

                            case LogSeverity.Module:
                                Console.ForegroundColor = ConsoleColor.Gray;
                                break;
                            }

                            Console.WriteLine(msg);
                        }
                        catch
                        {
                            //ignore
                        }
                    }
                }

                if (logFile)
                {
                    var format = (SettingsManager.Settings?.Config.UseSingleFileForLogging ?? false)
                        ? $"{DateTime.Now,-19} [{severity,8}] [{cat,13}]: {message}{Environment.NewLine}"
                        : $"{DateTime.Now,-19} [{severity,8}]: {message}{Environment.NewLine}";

                    await WriteToResource(file, format);
                }
            }
            catch
            {
                // ignored
            }
        }
Example #15
0
        public async Task <IList <LogEntity> > GetUserLogsAsync(string userId, DateTime?start, DateTime?end, LogSeverity?severity, LogType?type)
        {
            Expression <Func <Log <string>, bool> > filter = (log) => log.UserId == userId;

            if (start.HasValue)
            {
                filter = filter.And(log => log.DateCreated >= start);
            }


            if (end.HasValue)
            {
                end    = end.Value.AddMilliseconds(999 - end.Value.Millisecond);
                filter = filter.And(log => log.DateCreated <= end);
            }

            if (severity.HasValue)
            {
                filter = filter.And(log => log.Severity == severity);
            }


            if (type.HasValue)
            {
                filter = filter.And(log => log.Type == type);
            }

            return(Mapper.Map <IList <LogEntity> >(await logRepository.GetOnAsync(filter)));
        }
Example #16
0
        public static void WriteColoredLine(LogSeverity?severity, ConsoleTextFormat?format, params object[] args)
        {
            lock (_lockObj)
            {
                severity = severity ?? LogSeverity.Info;
                format   = format ?? ConsoleTextFormat.TimeAndText;

                Console.ForegroundColor = SeverityToColor(severity.Value);
                Console.Write($"[{Enum.GetName(typeof(LogSeverity), severity).ToUpper()}] ");
                Console.Out.FlushAsync();

                if (format == ConsoleTextFormat.TimeAndText)
                {
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.Write($"[{DateTime.Now.ToLocalTime().ToString()}] ");
                    Console.Out.FlushAsync();
                }

                Console.ForegroundColor = DefaultColor;

                for (int i = 0; i < args.Length; i++)
                {
                    object arg = args[i];
                    if (arg is ConsoleColor)
                    {
                        ConsoleColor?newColor = arg as ConsoleColor?;
                        if (newColor == null)
                        {
                            Console.ForegroundColor = ConsoleColor.Gray;
                        }
                        else
                        {
                            Console.ForegroundColor = newColor.Value;
                        }

                        Console.ForegroundColor = newColor.Value;
                    }
                    else if (arg is string)
                    {
                        string str        = arg as string;
                        Regex  colorRegex = new Regex(@"\$[[{[A-Za-z]+]]\$"); //Matches colors within $[[Black]]$
                        var    matches    = colorRegex.Matches(str);
                        if (matches.Count > 0)
                        {
                            string[] words = colorRegex.Split(str);
                            for (int y = 0; y < words.Length; y++)
                            {
                                string word = words[y];
                                Console.Write(words[y]);
                                Console.Out.FlushAsync();

                                if (y < matches.Count)
                                {
                                    string       color       = matches[y].Value.Replace("$[[", "").Replace("]]$", "");
                                    ConsoleColor parsedColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), matches[y].Value.Replace("$[[", "").Replace("]]$", ""), true);
                                    Console.ForegroundColor = parsedColor;
                                }
                            }
                        }
                        else
                        {
                            Console.Write(str);
                            Console.Out.FlushAsync();
                        }
                        Console.ForegroundColor = DefaultColor;
                    }
                }

                Console.Write("\n");
                Console.Out.FlushAsync();
            }
        }
Example #17
0
 public void Clear()
 {
     LastMessageSeverity = null;
     LastMessage         = null;
     LastException       = null;
 }
        public async Task <IActionResult> GetUserLogs(string userId, DateTime?from, DateTime?to, LogSeverity?severity, LogType?type)
        {
            try
            {
                if (!await userService.UserExistsAsync(userId))
                {
                    ModelState.AddModelError(nameof(userId), $"User with Id {userId} Not Found");

                    return(BadRequest(ModelState));
                }


                var logs = Mapper.Map <List <LogDto> >(await logService.GetUserLogsAsync(userId, from, to, severity, type));

                return(Ok(logs));
            }
            catch (Exception e)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message));
            }
        }
Example #19
0
 public async Task<DataList<LogEntry>> GetLatestLogEntries(PageInfo pageInfo, LogCategory? category, LogSeverity? serverity)
 {
     return await _logData.GetLogEntries(pageInfo, category, serverity, DateTime.MinValue, DateTime.Now);
 }
        /// <summary>
        /// Get all log entries for a certain module.
        /// </summary>
        /// <param name="lowerDate">Return messages logged after this date.</param>
        /// <param name="upperDate">Return messages logged before this date.</param>
        /// <param name="maxEntries">The maximum number of messages to return.</param>
        /// <param name="module">The name of the module, or null.</param>
        /// <param name="severity">The severity of the messages, or null.</param>
        /// <returns>An array containing zero or more log message and 'maxEntriesReached' (set to true if more than 'maxEntries' messages where available).</returns>
        public async Task <LogEntriesResult> GetLogEntries(DateTime lowerDate, DateTime upperDate, int maxEntries, string module, LogSeverity?severity)
        {
            var request = NewRequest(HttpMethod.Get, "Entries/{0}/{1}/{2}", lowerDate, upperDate, maxEntries);

            if (module != null)
            {
                request.AddParameter("module", module);
            }
            if (severity.HasValue)
            {
                request.AddParameter("severity", severity.Value);
            }
            return(await ExecuteAsync <LogEntriesResult>(request).ConfigureAwait(false));
        }
Example #21
0
 public void Clear()
 {
     LastMessageSeverity = null;
     LastMessage = null;
     LastException = null;
 }