Beispiel #1
0
 public static GetLogsRequestDtoData GetLogsRequestDtoData(Guid componentId, GetLogsFilter data)
 {
     if (data == null)
     {
         return(null);
     }
     return(new GetLogsRequestDtoData()
     {
         ComponentId = componentId,
         From = data.From,
         To = data.To,
         Context = data.Context,
         MaxCount = data.MaxCount,
         Levels = data.Levels
     });
 }
Beispiel #2
0
        public void ContextTest()
        {
            // запись без тега
            var account   = TestHelper.GetTestAccount();
            var component = account.CreateRandomComponentControl();
            var filter    = new GetLogsFilter();

            component.Log.Debug("no tag message");
            component.Log.Flush();
            var rows = component.GetLogs(filter).Data;

            Assert.Equal(1, rows.Count);
            filter.Context = "myTag";
            rows           = component.GetLogs(filter).Data;
            Assert.Equal(0, rows.Count);

            //запись с тегом
            component.Log.Context = "myTag";
            component.Log.Debug("has tag message");
            component.Log.Flush();
            rows = component.GetLogs(filter).Data;
            Assert.Equal(1, rows.Count);
        }
        public void SendLogTest()
        {
            var account = TestHelper.GetTestAccount();
            var client  = account.GetClient();
            var root    = client.GetRootComponentControl();

            var levels = new[]
            {
                LogLevel.Debug,
                LogLevel.Trace,
                LogLevel.Info,
                LogLevel.Warning,
                LogLevel.Error,
                LogLevel.Fatal
            };

            var date = RandomHelper.GetRandomDate(
                new DateTime(1980, 1, 1),
                new DateTime(2014, 1, 1));

            date = TestHelper.GetRoundDateTime(date);

            // отправляем сообщения каждого уровня
            var logDate  = date;
            var messages = new List <SendLogData>();

            foreach (var level in levels)
            {
                var message = new SendLogData()
                {
                    ComponentId = root.Info.Id,
                    Date        = logDate,
                    Message     = "test message " + level,
                    Level       = level,
                    Context     = Guid.NewGuid().ToString()
                };
                messages.Add(message);
                TestHelper.InitRandomProperties(message.Properties);
                var response = client.ApiService.SendLog(message);
                Assert.True(response.Success);
                logDate = logDate.AddSeconds(1);
            }

            // проверим, что все сообщения записались
            var findMessage = new GetLogsFilter()
            {
                From     = date,
                To       = date.AddSeconds(levels.Length),
                Levels   = levels.ToList(),
                MaxCount = levels.Length
            };
            var findLogsResponse = root.GetLogs(findMessage);

            Assert.True(findLogsResponse.Success);
            Assert.Equal(levels.Length, findLogsResponse.Data.Count);
            logDate = date;
            foreach (var level in levels)
            {
                var logRow  = findLogsResponse.Data.FirstOrDefault(x => x.Level == level);
                var message = messages.First(x => x.Level == level);
                Assert.NotNull(logRow);
                Assert.Equal("test message " + level, logRow.Message);
                Assert.Equal(logDate, logRow.Date);
                Assert.Equal(message.Context, logRow.Context);
                Assert.True(logRow.Properties.Count > 0);
                TestHelper.CheckExtentionProperties(logRow.Properties, message.Properties);
                logDate = logDate.AddSeconds(1);
            }
        }
Beispiel #4
0
        public void SendMessageTest()
        {
            var account   = TestHelper.GetTestAccount();
            var component = account.CreateRandomComponentControl();

            Assert.False(component.IsFake());

            var date = TestHelper.GetServerDateTime();

            component.Log.Debug("Debug 1");
            component.Log.Debug("Debug 2", new { text = "text 2", date });
            component.Log.Debug("Debug 3", new Dictionary <string, object>()
            {
                { "text", "text 3" },
                { "int32", 70000 },
            });

            component.Log.Trace("Trace 1");
            component.Log.Trace("Trace 2", new { text = "text 2", date });
            component.Log.Trace("Trace 3", new Dictionary <string, object>()
            {
                { "text", "text 3" },
                { "int32", 70000 },
            });

            component.Log.Info("Info 1");
            component.Log.Info("Info 2", new { text = "text 2", date });
            component.Log.Info("Info 3", new Dictionary <string, object>()
            {
                { "text", "text 3" },
                { "int32", 70000 },
            });

            component.Log.Warning("Warning 1");
            component.Log.Warning("Warning 2", new { text = "text 2", date });
            component.Log.Warning("Warning 3", new Dictionary <string, object>()
            {
                { "text", "text 3" },
                { "int32", 70000 },
            });

            component.Log.Error("Error 1");
            component.Log.Error("Error 2", new { text = "text 2", date });
            component.Log.Error("Error 3", new Dictionary <string, object>()
            {
                { "text", "text 3" },
                { "int32", 70000 },
            });

            component.Log.Fatal("Fatal 1");
            component.Log.Fatal("Fatal 2", new { text = "text 2", date });
            component.Log.Fatal("Fatal 3", new Dictionary <string, object>()
            {
                { "text", "text 3" },
                { "int32", 70000 },
            });
            component.Log.Flush();

            var endDate = TestHelper.GetServerDateTime().AddSeconds(1);

            // проверим, что все отправленное записалось в БД
            var findMessage = new GetLogsFilter()
            {
                From     = date,
                To       = endDate,
                Levels   = null,
                MaxCount = 100
            };
            var findLogsResponse = component.GetLogs(findMessage);

            Assert.True(findLogsResponse.Success);
            var rows   = findLogsResponse.Data;
            var levels = new[] { "Debug", "Trace", "Info", "Warning", "Error", "Fatal" };

            Assert.Equal(levels.Length * 3, rows.Count);
            foreach (var level in levels)
            {
                var message = rows.First(x => x.Message == level + " " + 1);
                Assert.Equal(0, message.Properties.Count);

                message = rows.First(x => x.Message == level + " " + 2);
                Assert.Equal(2, message.Properties.Count);
                string text = message.Properties["text"];
                Assert.Equal("text 2", text);
                DateTime testDate = message.Properties["date"];
                Assert.Equal(date, testDate);

                message = rows.First(x => x.Message == level + " " + 3);
                Assert.Equal(2, message.Properties.Count);
                text = message.Properties["text"];
                Assert.Equal("text 3", text);
                int int32 = message.Properties["int32"];
                Assert.Equal(70000, int32);
            }
        }