protected String GetItemType(TraceItem item)
		{
			Int32 value = item.EventType.Value;
			PropertyInfo pi = typeof(TraceItem).GetProperty("EventType", BindingFlags.Instance | BindingFlags.Public);
			PXIntListAttribute attr = (PXIntListAttribute)pi.GetCustomAttributes(typeof(PXIntListAttribute), false)[0];
			return attr.ValueLabelDic[value];
		}
Example #2
0
        /// <summary>
        /// Adds a single trace record to the store.
        /// </summary>
        /// <remarks>
        /// All trace records are correlated with their associated
        /// request GUID inside this method.
        /// </remarks>
        /// <param name="traceRecord"></param>
        public void AddTrace(TraceRecord traceRecord)
        {
            lock (_thisLock)
            {
                RequestTrace requestTrace;
                if (_requestList.Count >= _maxRequests)
                {
                    requestTrace = _requestList.Last.Value;
                    _requestList.RemoveLast();
                    _requestDictionary.Remove(requestTrace.Id);
                }

                if (!_requestDictionary.TryGetValue(traceRecord.RequestId.ToString(), out requestTrace))
                {
                    requestTrace = CreateRequestTrace(traceRecord);
                    _requestDictionary[requestTrace.Id] = requestTrace;
                    _requestList.AddFirst(requestTrace);
                }

                TraceItem traceItem = CreateTraceItem(traceRecord);
                requestTrace.Traces.Add(traceItem);
                if (traceItem.Status != 0)
                {
                    requestTrace.Status = traceItem.Status;
                    requestTrace.Reason = ((HttpStatusCode)traceItem.Status).ToString();
                }
            }
        }
Example #3
0
 public void Add(TraceItem item)
 {
     lock (items)
     {
         items.Add(item);
     }
 }
Example #4
0
        /// <summary>
        /// Prida dalsi zaznam do kolekcia ktora caka na ulozenie do databazy
        /// </summary>
        /// <param name="time">Cas zaznamu</param>
        /// <param name="_traceType">Typ zaznamu</param>
        /// <param name="modulName">Meno modulu ktory zaznam vytvoril</param>
        /// <param name="message">Sprava zaznamu</param>
        /// <returns>True = zaznam bol uspesne pridany do kolekcie na ulozenie</returns>
        private Boolean AddTraceItem(DateTime time, TraceTypes traceType, String modulName, String message)
        {
            //vytvorime dalsiu strukturu zaznamu
            TraceItem item = new TraceItem(time, traceType, modulName, message);

            try
            {
                //zalogujeme aj do konzoly
                if (this._consoleTrace)
                {
                    //zalogujeme
                    Console.WriteLine(String.Format("[{0}] [{1}]: {2}", time.ToString("HH:mm:ss.fff"),
                                                    traceType, message));
                }

                //synchronizujeme pristup
                lock (this._lockObj)
                {
                    //pridame dalsi zaznam
                    this._items.Add(item);
                }

                //zaznam bol uspesne pridany
                return(true);
            }
            catch (Exception ex)
            {
                //interna chyba
                this.InternalException(ex, "Internal system error");

                //zaznam sa nepodarilo pridat
                return(false);
            }
        }
Example #5
0
        public Task WriteAsync(TraceItem item)
        {
            if (_isDirty || _cItems == null)
            {
                if (_items == null)
                {
                    return(Task.CompletedTask);
                }
                lock (_locker)
                {
                    _cItems = new List <ITraceStorage>(_items);
                }
            }
            var tsks = _procTaskPool.New();

            for (var i = 0; i < _cItems.Count; i++)
            {
                tsks.Add(InternalWriteAsync(_cItems[i], item));
            }
            var resTask = Task.WhenAll(tsks).ContinueWith(_ =>
            {
                tsks.Clear();
                _procTaskPool.Store(tsks);
            });

            return(resTask);
        }
Example #6
0
 /// <summary>
 /// 触发日志事件
 /// </summary>
 /// <param name="item"></param>
 private void TriggerTrace(TraceItem item)
 {
     if (this.evtTraceTrigger != null)
     {
         evtTraceTrigger(item);
     }
 }
Example #7
0
 public static void PostAsync(TraceItem item)
 {
     if (!FailedToConnect)
     {
         PostMessage(XmlUtil.SerializeObject(item));
     }
 }
Example #8
0
        private void Excute(TraceItem item)
        {
            Log log = item.ToLog();

            if (mqttServer == null || mqttServer.IsRuning == false)
            {
                return;
            }
            PublishData data = new PublishData()
            {
                topic = this.logNewsTopic, data = log
            };

            if (!data.ToPayLoad())
            {
                return;
            }

            Task task = this.mqttServer.Publish(data);

            try
            {
                task.Wait(5000);// 外面加上超时判断,防止一条发送失败,后面一直卡死
            }
            catch { }
            //JsonConvert.DeserializeObject<PumpJZ>();
        }
Example #9
0
        /// <summary>
        /// ErrorJsonResultException 日志
        /// </summary>
        /// <param name="ex"></param>
        public static void ErrorJsonResultExceptionLog(ErrorJsonResultException ex)
        {
            if (!WxConfig.IsDebug)
            {
                return;
            }

            using (var traceItem = new TraceItem(LogTrace._logEndActon, "ErrorJsonResultException"))
            {
                traceItem.Log("ErrorJsonResultException");
                traceItem.Log("AccessTokenOrAppId:{0}", ex.AccessTokenOrAppId ?? "null");
                traceItem.Log("URL:{0}", ex.Url);
                traceItem.Log("errcode:{0}", ex.JsonResult.ErrorCodeValue);
                traceItem.Log("errmsg:{0}", ex.JsonResult.errmsg);
            }

            if (OnWeixinExceptionFunc != null)
            {
                try
                {
                    OnWeixinExceptionFunc(ex);
                }
                catch
                {
                }
            }
        }
Example #10
0
        /// <summary>
        /// WeixinException 日志
        /// </summary>
        /// <param name="ex"></param>
        public static void WeixinExceptionLog(WeixinException ex)
        {
            if (!WxConfig.IsDebug)
            {
                return;
            }
            using (var traceItem = new TraceItem(LogTrace._logEndActon, "WeixinException"))
            {
                traceItem.Log(ex.GetType().Name);
                traceItem.Log("AccessTokenOrAppId:{0}", ex.AccessTokenOrAppId);
                traceItem.Log("Message:{0}", ex.Message);
                traceItem.Log("StackTrace:{0}", ex.StackTrace);
                if (ex.InnerException != null)
                {
                    traceItem.Log("InnerException:{0}", ex.InnerException.Message);
                    traceItem.Log("InnerException.StackTrace:{0}", ex.InnerException.StackTrace);
                }
            }

            if (OnWeixinExceptionFunc != null)
            {
                try
                {
                    OnWeixinExceptionFunc(ex);
                }
                catch
                {
                }
            }
        }
Example #11
0
        private static void AddItem(string name, Stopwatch sw)
        {
            var traceItem = new TraceItem(name, sw.Elapsed.TotalMilliseconds);

            TraceItems.Add(traceItem);
            Debug.WriteLine("*** PERFORMANCE TRACER *** " + traceItem);
        }
Example #12
0
        public static void TraceAllocation(ITracableObject source)
        {
            var       hashCode = source.GetHashCode();
            TraceItem item     = null;

            if (_taskSourceDict.TryGetValue(hashCode, out item))
            {
                item.ResetTarget(source);
            }
            else
            {
                item = new TraceItem(source);
                _taskSourceDict.Add(hashCode, item);
            }
            if (EnableStack)
            {
                item.StackTrace = GetStackTrace();
            }
            else
            {
                item.StackTrace = DEFAULT_EMPTY_STACK_STACE;
            }
            if (onTraceUpdate != null)
            {
                onTraceUpdate();
            }
        }
Example #13
0
 private void Manage(TraceItem item)
 {
     // 触发该事件
     if (evtTraceTrigger != null)
     {
         evtTraceTrigger(item);
     }
 }
Example #14
0
 private static void Manage(TraceItem item)
 {
     // 触发日志事件
     if (TriggerTrace1 != null)
     {
         TriggerTrace1(item);
     }
 }
Example #15
0
        protected String GetItemType(TraceItem item)
        {
            Int32              value = item.EventType.Value;
            PropertyInfo       pi    = typeof(TraceItem).GetProperty("EventType", BindingFlags.Instance | BindingFlags.Public);
            PXIntListAttribute attr  = (PXIntListAttribute)pi.GetCustomAttributes(typeof(PXIntListAttribute), false)[0];

            return(attr.ValueLabelDic[value]);
        }
Example #16
0
        private static void Manage(TraceItem item)
        {
            //// 触发日志事件
            //if (TriggerTrace1 != null)
            //    TriggerTrace1(item);

            LogManager.Append(item);
        }
Example #17
0
        private static void Append(TraceItem item)
        {
            if (!IsRuning)
            {
                return;
            }

            Manage(item);
        }
Example #18
0
        public bool Execute(Node executedFromNode = null)
        {
            LastExecutionFrom = executedFromNode;

            // Add the node to the cycle
            var       cycle     = this.Graph.GetCurrentCycle();
            TraceItem traceItem = null;

            if (cycle != null)
            {
                traceItem = cycle.AddExecutedNode(this);
            }

            if (this.NodeType != typeof(EntryPointNode).Name)
            {
                if (!this.CanBeExecuted)
                {
                    return(false);
                }
            }

            //stop the execution if the state isnt started
            if (!(this.Graph.currentContext.currentGraphState == Enums.GraphStateEnum.STARTED))
            {
                this.Graph.Stop();
                return(false);
            }

            var startTime = DateTimeOffset.Now.ToUnixTimeMilliseconds();

            this.CurrentTraceItem = traceItem;
            try
            {
                if (!this.OnExecution())
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Error on node execution");
                if (this.CurrentTraceItem != null)
                {
                    this.CurrentTraceItem.ExecutionException = ex;
                    return(false);
                }
            }
            this.CurrentTraceItem = null;
            var elapsedTime = DateTimeOffset.Now.ToUnixTimeMilliseconds() - startTime;

            if (traceItem != null)
            {
                traceItem.ExecutionTime = elapsedTime;
            }

            return(Next());
        }
Example #19
0
        private void Record(TraceItem item)
        {
            Log    log = item.ToLog();
            string id  = Guid.NewGuid().ToString();
            string sql = string.Format(@"insert into {0} (类型,信息文本,插入时间,系统名称) values ('{1}',""{2}"",""{3}"",""{4}"")",
                                       this.tableName, log.type, log.text, log.dateTime, log.serverName);

            this.sqLite.ExecuteNonQuery(sql);
        }
Example #20
0
        private void Print(Log log)
        {
            // 保证render的时间必须短。否则界面会假死
            Color  color = EnvChecker.GetColor(TraceItem.ToTraceItem(log).type);
            string mess  = log.serverName + "   " + DataUtil.ToDateString(log.dateTime) + " " + log.text;

            this.BeginInvoke(new Action(() => {
                Render(color, mess);
            }));
        }
Example #21
0
 private static async Task InternalWriteAsync(ITraceStorage storage, TraceItem item)
 {
     try
     {
         await storage.WriteAsync(item).ConfigureAwait(false);
     }
     catch
     {
         //
     }
 }
Example #22
0
        public async Task WriteAsync(TraceItem item)
        {
            var cItems = _cItems;
            var tsks   = _procTaskPool.New();

            for (var i = 0; i < cItems.Length; i++)
            {
                tsks.Add(InternalWriteAsync(_cItems[i], item));
            }
            await Task.WhenAll(tsks).ConfigureAwait(false);

            tsks.Clear();
            _procTaskPool.Store(tsks);
        }
Example #23
0
 private string GetName(TraceItem item)
 {
     if (item != null)
     {
         var items = item.EventDescription.Split(new string[] { "::" }, StringSplitOptions.RemoveEmptyEntries);
         if (items.Length > 1)
         {
             return(string.Format("{0}.{1}",
                                  items[0].Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries).LastOrDefault(),
                                  items[1].Split(new char[] { '(' }, StringSplitOptions.RemoveEmptyEntries).FirstOrDefault()));
         }
         return(item.EventDescription);
     }
     return(string.Empty);
 }
Example #24
0
 public void Append(TraceItem loggerRow)
 {
     if (!IsRuning)
     {
         return;
     }
     if (queue.IsAddingCompleted)
     {
         return;
     }
     if (queue.Count > 4096)
     {
         return;
     }
     queue.Add(loggerRow);
 }
Example #25
0
 private void Append(TraceItem item)
 {
     if (!IsRuning)
     {
         return;
     }
     if (queue.IsAddingCompleted)
     {
         return;
     }
     if (queue.Count > 4096)
     {
         return;
     }
     queue.Add(item);
 }
Example #26
0
 public static void RecordDisPatchLog(TraceItem item)
 {
     if (!DisPatchRecordEnvFlag)
     {
         return;
     }
     try
     {
         SQLiteHelper sqLite = new SQLiteHelper(fileFullPath);
         Log          log    = item.ToLog();
         string       id     = Guid.NewGuid().ToString();
         string       sql    = string.Format(@"insert into {0} (类型,信息文本,插入时间,系统名称) values ('{1}',""{2}"",""{3}"",""{4}"")",
                                             logTableName, log.type, log.text, log.dateTime, log.serverName);
         sqLite.ExecuteNonQuery(sql);
     }
     catch { }
 }
Example #27
0
        public IActionResult Update(string id, [FromBody] TraceItem item)
        {
            if (item == null || item.ItemCode != id)
            {
                return(BadRequest());
            }
            var traceItem = _context.TraceItem.FirstOrDefault(t => t.ItemCode == id);

            if (traceItem == null)
            {
                return(NotFound());
            }
            traceItem.Note = item.Note;
            _context.TraceItem.Update(traceItem);
            _context.SaveChanges();
            return(new NoContentResult());
        }
Example #28
0
        private static TraceItem CreateTraceItem(TraceRecord traceRecord)
        {
            TraceItem traceItem = new TraceItem
            {
                Category  = traceRecord.Category,
                Exception = traceRecord.Exception,
                Kind      = traceRecord.Kind,
                Level     = traceRecord.Level,
                Message   = traceRecord.Message,
                Operator  = traceRecord.Operator,
                Operation = traceRecord.Operation,
                Status    = (int)traceRecord.Status,
                Timestamp = traceRecord.Timestamp,
            };

            return(traceItem);
        }
Example #29
0
 /// <inheritdoc />
 /// <summary>
 /// Writes a trace item to the storage
 /// </summary>
 /// <param name="item">Trace item</param>
 public Task WriteAsync(TraceItem item)
 {
     if (Interlocked.Increment(ref _count) < 1_000)
     {
         _traceItems.Add(new MessagingTraceItem
         {
             EnvironmentName = Core.EnvironmentName,
             MachineName     = Core.MachineName,
             ApplicationName = Core.ApplicationName,
             InstanceId      = Core.InstanceId,
             GroupName       = item.GroupName,
             Id          = item.Id,
             Tags        = item.Tags,
             Timestamp   = item.Timestamp,
             TraceName   = item.TraceName,
             TraceObject = _sendCompleteTrace ? new SerializedObject(item.TraceObject) : null
         });
     }
     return(Task.CompletedTask);
 }
Example #30
0
        private void FixLooseEnds(List <TraceItem> items)
        {
            try
            {
                var stack = new Stack <TraceItem>();
                for (var i = 0; i < items.Count; i++)
                {
                    if (items[i].EventType == "End")
                    {
                        if (stack.Count > 0)
                        {
                            stack.Pop();
                        }
                    }
                    else
                    {
                        stack.Push(items[i]);
                    }
                }

                while (stack.Count > 0)
                {
                    var startItem = stack.Pop();
                    var endItem   = new TraceItem
                    {
                        EventDate        = items.Max(x => x.EventDate),
                        EventDescription = startItem.EventDescription,
                        EventType        = "End",
                        GroupKey         = startItem.GroupKey,
                        TraceKey         = startItem.TraceKey,
                        UserKey          = startItem.UserKey,
                        IsException      = startItem.IsException
                    };
                    items.Add(endItem);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
        public List <TraceItem> selectDataByRRCMessage(string RRCMessage)
        {
            List <TraceItem> outputList = new List <TraceItem>();
            TraceItem        traceItem  = new TraceItem();

            try
            {
                con = new SqlCeConnection("Data Source = " + _mainDir + "/Database1.sdf; Max Database Size = 4090");
                SqlCeDataAdapter sda = new SqlCeDataAdapter();
                SqlCeCommand     cmd = con.CreateCommand();

                con.Open();
                cmd.CommandText   = String.Format("Select * FROM TraceDB WHERE rrcMsgName = '" + RRCMessage + "';");
                sda.SelectCommand = cmd;

                DataTable dt = new DataTable();
                sda.Fill(dt);

                foreach (DataRow r in dt.Rows)
                {
                    traceItem.rrcMessage = (string)r[0];
                    traceItem.ueid       = (string)r[1];
                    traceItem.cellID     = (string)r[2];
                    traceItem.time       = (DateTime)r[3];
                    outputList.Add(traceItem);
                }

                con.Close();
            }
            catch (Exception ex)
            {
                errorMessage = ex.Message;
                if (con.State == ConnectionState.Open)
                {
                    con.Close();
                }
            }

            return(outputList);
        }
Example #32
0
		public void Initialise(TraceItem item)
		{
			Tag = item;
		}
Example #33
0
            private TraceItem DequeueAllItems()
            {
                TraceItem concatenatedItem = null;
                StringBuilder concatenatedMessage = new StringBuilder();
                lock (this.dequeueLock)
                {
                    TraceItem lastItem = null;
                    if (this.queue.Count > 0)
                    {
                        while (this.queue.Count > 0)
                        {
                            lastItem = this.queue.Dequeue();
                            concatenatedMessage.AppendLine(lastItem.Message);
                        }

                        concatenatedItem = new TraceItem() { Message = concatenatedMessage.ToString(), Percentage = lastItem.Percentage };
                    }
                }

                return concatenatedItem;
            }
Example #34
0
 public void AddItem(string message, int percentage)
 {
     var item = new TraceItem() { Message = message, Percentage = percentage };
     lock (this.dequeueLock)
     {
         this.queue.Enqueue(item);
     }
 }