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); }
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); }
private static void ProcessPackage(TLogPackage logPackage) { try { ProcessLog(logPackage); ProcessMetric(logPackage); } catch (Exception ex) { FileLogger.Log(ex); } }
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); }
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); }
/// <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 溢出处理 }
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); }
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); }