Ejemplo n.º 1
0
        public override long Send(IList <ILogEntity> logEntities)
        {
            if (logEntities == null || logEntities.Count <= 0)
            {
                return(0);
            }

            TLogPackage logPackage = this.CreateLogPackage(logEntities);

            var trans = new THttpClient(uri);

            trans.ConnectTimeout = SENDER_TIMEOUT;
            trans.DataSizeLimit  = TransDataSizeLimit;
            //var protocol = new TBinaryProtocol(httpClient);
            var protocol = new TCompactProtocol(trans);

            trans.Open();

            var client = new LogTransferService.Client(protocol);

            client.Log(logPackage);

            long data_size = trans.DataSize;

            trans.Close();
            return(data_size);
        }
Ejemplo n.º 2
0
        public dynamic GetLogOnOff(int appId = 0)
        {
            string resp = string.Empty;

            var on_off = LogViewerManager.GetLogViewer().GetLogOnOff(appId);

            if (on_off != null)
            {
                resp += on_off.Debug + "," + on_off.Info + "," + on_off.Warn + "," + on_off.Error;
            }

            #region 计数

            TMetricEntity metric = new TMetricEntity();
            metric.Name  = "logging_client_getLogOnOff_count";
            metric.Time  = Utils.GetTimeStamp(DateTime.Now) / 10000000;
            metric.Value = 1;
            metric.Tags  = new Dictionary <string, string>();
            metric.Tags.Add("AppId", appId.ToString());
            List <TMetricEntity> metrics = new List <TMetricEntity>();
            metrics.Add(metric);

            TLogPackage logPackage = new TLogPackage();
            logPackage.AppId       = appId;
            logPackage.IP          = 0;
            logPackage.MetricItems = metrics;

            LogReciverBase LogReciver = new LogReciverBase();

            LogReciver.Log(logPackage);

            #endregion 计数

            return(resp);
        }
Ejemplo n.º 3
0
 private static void ProcessPackage(TLogPackage logPackage)
 {
     try
     {
         ProcessLog(logPackage);
         ProcessMetric(logPackage);
     }
     catch (Exception ex)
     {
         FileLogger.Log(ex);
     }
 }
Ejemplo n.º 4
0
        protected TLogPackage CreateLogPackage(IList <ILogEntity> logEntities)
        {
            var logs    = logEntities.Where(x => x.Type == 1);
            var metrics = logEntities.Where(x => x.Type == 2);

            List <TLogEntity> tlogs = new List <TLogEntity>();

            foreach (var log in logs)
            {
                var        _log = log as LogEntity;
                TLogEntity tlog = new TLogEntity();
                tlog.Level   = (sbyte)_log.Level;
                tlog.Message = _log.Message;
                tlog.Source  = _log.Source;
                tlog.Tags    = _log.Tags;
                tlog.Thread  = _log.Thread;
                tlog.Time    = _log.Time;
                tlog.Title   = _log.Title;
                tlogs.Add(tlog);
            }

            List <TMetricEntity> tmetrics = new List <TMetricEntity>();

            foreach (var metric in metrics)
            {
                var           _metric = metric as MetricEntity;
                TMetricEntity tmetric = new TMetricEntity();
                tmetric.Name  = _metric.Name;
                tmetric.Tags  = _metric.Tags;
                tmetric.Time  = _metric.Time;
                tmetric.Value = _metric.Value;
                tmetrics.Add(tmetric);
            }

            TLogPackage package = new TLogPackage();

            package.AppId       = Settings.AppId;
            package.IP          = ServerIPNum;
            package.LogItems    = tlogs;
            package.MetricItems = tmetrics;
            return(package);
        }
Ejemplo n.º 5
0
        public void ProcessRequest(HttpContext context)
        {
            int appId = Convert.ToInt32(context.Request["appId"]);

            string resp = string.Empty;


            var on_off = LogViewerManager.GetLogViewer().GetLogOnOff(appId);

            if (on_off != null)
            {
                resp += on_off.Debug + "," + on_off.Info + "," + on_off.Warn + "," + on_off.Error;
            }

            #region 计数
            TMetricEntity metric = new TMetricEntity();
            metric.Name  = "logging_client_getLogOnOff_count";
            metric.Time  = Utils.GetTimeStamp(DateTime.Now) / 10000000;
            metric.Value = 1;
            metric.Tags  = new Dictionary <string, string>();
            metric.Tags.Add("AppId", appId.ToString());
            List <TMetricEntity> metrics = new List <TMetricEntity>();
            metrics.Add(metric);


            TLogPackage logPackage = new TLogPackage();
            logPackage.AppId       = appId;
            logPackage.IP          = 0;
            logPackage.MetricItems = metrics;

            LogReciverBase LogReciver = new LogReciverBase();

            LogReciver.Log(logPackage);


            #endregion

            context.Response.Write(resp);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Thrift实现方法
        /// </summary>
        /// <param name="logPackage"></param>
        public void Log(TLogPackage logPackage)
        {
            int over_count = queue.Enqueue(logPackage);



            //sizeof(logPackage)
            //logPackage.
            #region 溢出处理

            if (over_count > 0)
            {
                string msg           = "Logging_Server_Queue溢出数量:" + over_count + " 。 建议增加 BlockingQueueLength 配置值";
                var    over_log_tags = new List <string> {
                    "_title_=Logging_Server_Over"
                };

                LogEntity over_log = new LogEntity();
                over_log.IP      = ServerIPNum;
                over_log.Level   = LogLevel.Error;
                over_log.Message = msg;
                over_log.Tags    = over_log_tags;
                over_log.Title   = "Logging_Server_Over";
                over_log.Source  = "Logging.Server.LogReciver";
                over_log.Thread  = Thread.CurrentThread.ManagedThreadId;
                over_log.Time    = Utils.GetTimeStamp(DateTime.Now);
                over_log.AppId   = server_appId;

                List <LogEntity> over_logs = new List <LogEntity>();
                //over_logs.Add(over_log);
                //ProcessLog(over_logs);

                var processor = LogProcessorManager.GetLogProcessor();
                processor.Process(over_logs);
            }

            #endregion 溢出处理
        }
Ejemplo n.º 7
0
        private static void ProcessMetric(TLogPackage logPackage)
        {
            if (logPackage.MetricItems == null || logPackage.MetricItems.Count == 0)
            {
                return;
            }
            string appId = logPackage.AppId.ToString();
            string ip    = Utils.NumberToIP(logPackage.IP);
            List <MetricEntity> metrics = new List <MetricEntity>();

            foreach (var item in logPackage.MetricItems)
            {
                MetricEntity metric = new MetricEntity();
                metric.Name  = item.Name;
                metric.Time  = item.Time;
                metric.Tags  = item.Tags;
                metric.Value = item.Value;
                if (metric.Tags == null)
                {
                    metric.Tags = new Dictionary <string, string>();
                }
                if (!metric.Tags.ContainsKey("AppId"))
                {
                    metric.Tags.Add("AppId", appId);
                }
                //if (!metric.Tags.ContainsKey("IP"))
                //{
                //    metric.Tags.Add("IP", ip);
                //}
                metrics.Add(metric);
            }

            var metricProcessor = MetricProcessorManager.GetMetricProcessor();

            metricProcessor.Process(metrics);
        }
Ejemplo n.º 8
0
        private static void ProcessLog(TLogPackage logPackage)
        {
            if (logPackage.LogItems == null || logPackage.LogItems.Count == 0)
            {
                return;
            }

            List <TLogEntity> logEntities = logPackage.LogItems;
            var _logEntities = new List <LogEntity>();

            var log_on_off = LogOnOffManager.GetLogOnOff(logPackage.AppId);

            foreach (var item in logEntities)
            {
                if (item.Level == (int)LogLevel.Debug && log_on_off.Debug == 0)
                {
                    continue;
                }
                if (item.Level == (int)LogLevel.Info && log_on_off.Info == 0)
                {
                    continue;
                }
                if (item.Level == (int)LogLevel.Warm && log_on_off.Warm == 0)
                {
                    continue;
                }
                if (item.Level == (int)LogLevel.Error && log_on_off.Error == 0)
                {
                    continue;
                }

                List <string> tags = new List <string>();

                if (item.Tags != null && item.Tags.Count > 0)
                {
                    foreach (var tag in item.Tags)
                    {
                        tags.Add(tag.Key.Replace("=", string.Empty) + "=" + tag.Value);
                    }
                }

                LogEntity _log = new LogEntity();
                _log.IP      = logPackage.IP;
                _log.Level   = (LogLevel)item.Level;
                _log.Message = item.Message;
                _log.Tags    = tags;
                _log.Title   = item.Title;
                _log.Source  = item.Source;
                _log.Thread  = item.Thread;
                _log.Time    = item.Time;
                _log.AppId   = logPackage.AppId;
                _logEntities.Add(_log);
            }

            if (_logEntities.Count == 0)
            {
                return;
            }

            var processor = LogProcessorManager.GetLogProcessor();

            processor.Process(_logEntities);
        }