Пример #1
0
        public bool Add(string message, BreadcrumbLevel type, UnityEngineLogLevel level, IDictionary <string, string> attributes)
        {
            lock (_lockObject)
            {
                if (Breadcrumbs.Count + 1 > MaximumNumberOfBreadcrumbs)
                {
                    while (Breadcrumbs.Count + 1 > MaximumNumberOfBreadcrumbs)
                    {
                        Breadcrumbs.Dequeue();
                    }
                }
            }

            Breadcrumbs.Enqueue(new InMemoryBreadcrumb()
            {
                Message    = message,
                Timestamp  = DateTimeHelper.TimestampMs(),
                Level      = level,
                Type       = type,
                Attributes = attributes
            });
            _breadcrumbId++;

            return(true);
        }
Пример #2
0
        /// <summary>
        /// Adds breadcrumb entry to the breadcrumbs file.
        /// </summary>
        /// <param name="message">Breadcrumb message</param>
        /// <param name="level">Breadcrumb level</param>
        /// <param name="type">Breadcrumb type</param>
        /// <param name="attributes">Breadcrumb attributs</param>
        /// <returns>True if breadcrumb was stored in the breadcrumbs file. Otherwise false.</returns>
        public bool Add(string message, BreadcrumbLevel level, UnityEngineLogLevel type, IDictionary <string, string> attributes)
        {
            byte[] bytes;
            lock (_lockObject)
            {
                double id         = _breadcrumbId++;
                var    jsonObject = CreateBreadcrumbJson(id, message, level, type, attributes);
                bytes = System.Text.Encoding.UTF8.GetBytes(jsonObject.ToJson());

                if (currentSize + bytes.Length > BreadcrumbsSize)
                {
                    try
                    {
                        ClearOldLogs();
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }
            }

            try
            {
                return(AppendBreadcrumb(bytes));
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(string.Format("Cannot append data to the breadcrumbs file. Reason: {0}", e.Message));
                return(false);
            }
        }
 internal bool ShouldLog(UnityEngineLogLevel type)
 {
     if (!BreadcrumbsLevel.HasFlag(BacktraceBreadcrumbType.Manual))
     {
         return(false);
     }
     return(UnityLogLevel.HasFlag(type));
 }
 internal bool AddBreadcrumbs(string message, BreadcrumbLevel level, UnityEngineLogLevel type, IDictionary <string, string> attributes = null)
 {
     if (!BreadcrumbsLevel.HasFlag((BacktraceBreadcrumbType)level))
     {
         return(false);
     }
     return(LogManager.Add(message, level, type, attributes));
 }
Пример #5
0
        public void TestLogLogs_ShouldEnableThem_EventsAreSet()
        {
            var inMemoryBreadcrumbStorage = new BacktraceInMemoryLogManager();
            var breadcrumbsManager        = new BacktraceBreadcrumbs(inMemoryBreadcrumbStorage);
            UnityEngineLogLevel level     = UnityEngineLogLevel.Debug | UnityEngineLogLevel.Error | UnityEngineLogLevel.Fatal | UnityEngineLogLevel.Info | UnityEngineLogLevel.Warning;

            breadcrumbsManager.EnableBreadcrumbs(BacktraceBreadcrumbType.Log, level);

            Assert.IsTrue(breadcrumbsManager.EventHandler.HasRegisteredEvents);
            breadcrumbsManager.UnregisterEvents();
        }
Пример #6
0
        public void TestManualLogs_ShouldFilterAllManualLogs_BreadcrumbsWasntSaved(LogType testedLevel)
        {
            const string message = "message";
            const int    expectedNumberOfLogs      = 0;
            var          inMemoryBreadcrumbStorage = new BacktraceInMemoryLogManager();
            var          breadcrumbsManager        = new BacktraceBreadcrumbs(inMemoryBreadcrumbStorage);
            //anything else than Manual
            var breadcrumbType        = BacktraceBreadcrumbType.Configuration;
            UnityEngineLogLevel level = UnityEngineLogLevel.Debug | UnityEngineLogLevel.Error | UnityEngineLogLevel.Fatal | UnityEngineLogLevel.Info | UnityEngineLogLevel.Warning;

            breadcrumbsManager.EnableBreadcrumbs(breadcrumbType, level);
            var result = breadcrumbsManager.Log(message, testedLevel);

            Assert.IsFalse(result);
            Assert.AreEqual(expectedNumberOfLogs, inMemoryBreadcrumbStorage.Breadcrumbs.Count);
        }
        public bool EnableBreadcrumbs(BacktraceBreadcrumbType level, UnityEngineLogLevel unityLogLevel)
        {
            if (_enabled)
            {
                return(false);
            }
            BreadcrumbsLevel = level;
            UnityLogLevel    = unityLogLevel;

            var breadcrumbStorageEnabled = LogManager.Enable();

            if (!breadcrumbStorageEnabled)
            {
                return(false);
            }
            EventHandler.Register(level);
            return(true);
        }
Пример #8
0
        /// <summary>
        /// Convert diagnostic data to JSON format
        /// </summary>
        /// <param name="id">Breadcrumbs id</param>
        /// <param name="message">breadcrumbs message</param>
        /// <param name="level">Breadcrumb level</param>
        /// <param name="type">Breadcrumb type</param>
        /// <param name="attributes">Breadcrumb attributes</param>
        /// <returns>JSON object</returns>
        private BacktraceJObject CreateBreadcrumbJson(
            double id,
            string message,
            BreadcrumbLevel level,
            UnityEngineLogLevel type,
            IDictionary <string, string> attributes)
        {
            var jsonObject = new BacktraceJObject();

            // breadcrumbs integration accepts timestamp in ms not in sec.
            jsonObject.Add("timestamp", DateTimeHelper.TimestampMs(), "F0");
            jsonObject.Add("id", id, "F0");
            jsonObject.Add("type", Enum.GetName(typeof(BreadcrumbLevel), level).ToLower());
            jsonObject.Add("level", Enum.GetName(typeof(UnityEngineLogLevel), type).ToLower());
            jsonObject.Add("message", message);
            if (attributes != null && attributes.Count > 0)
            {
                jsonObject.Add("attributes", new BacktraceJObject(attributes));
            }
            return(jsonObject);
        }