public IEnumerable<LogEvent> Evaluate(string logFileName, string line)
        {
            _rwLocker.EnterReadLock();
            try
            {
                foreach (EventEvaluatorRule eventEvaluationRule in _rules)
                {
                    Match m = eventEvaluationRule.RegexRule.Match(line);
                    if (!m.Success) continue;
                    if (eventEvaluationRule.HasExcludingRules && eventEvaluationRule.ExcludingRules.Any(r => r.Match(line).Success)) continue;
                    LogEvent evt = new LogEvent
                                       {
                                           Source = eventEvaluationRule.GetSource(logFileName, m),
                                           Category = eventEvaluationRule.GetCounterCategory(logFileName, m),
                                           Counter = eventEvaluationRule.GetCounterName(logFileName, m),
                                           Instance = eventEvaluationRule.GetInstance(logFileName, m),
                                           Type = eventEvaluationRule.EventType,
                                           DateTime = eventEvaluationRule.GetDateTime(logFileName, m),
                                           ExtendedData = eventEvaluationRule.GetExtendedData(logFileName, m),
                                           Value = eventEvaluationRule.GetValue(logFileName, m)
                                       };
                    yield return evt;
                }
            }
            finally
            {
                _rwLocker.ExitReadLock();
            }

        }
Пример #2
0
 public static LogEvent Deserialize(byte[] data)
 {
     MemoryStream stream = new MemoryStream(data);
     LogEvent result = new LogEvent();
     result.Type = (EventType)Packer.UnPackInt32(stream);
     result.DateTime = new DateTime( Packer.UnPackInt64(stream));
     result.Source = Packer.UnPackString(stream);
     result.Category = Packer.UnPackString( stream);
     result.Counter = Packer.UnPackString(stream);
     result.Instance = Packer.UnPackString(stream);
     result.ExtendedData = Packer.UnPackString(stream);
     result.Value = Packer.UnPackString(stream);
     return result;
 }
Пример #3
0
 public byte[] Serialize(LogEvent logEvent)
 {
     MemoryStream stream = new MemoryStream();
     Packer.PackInt32((int) logEvent.Type, stream);
     Packer.PackInt64(DateTime.Ticks,stream);
     Packer.PackString(Source, stream);
     Packer.PackString(Category,stream);
     Packer.PackString(Counter,stream);
     Packer.PackString(Instance,stream);
     Packer.PackString(ExtendedData,stream);
     Packer.PackString(Value,stream);
     int len = (int)stream.Position;
     stream.Seek(0, SeekOrigin.Begin);
     byte[] result = new byte[len];
     stream.Read(result, 0, len);
     return result;
 }
Пример #4
0
 public GetRequestAsyncState(HttpWebRequest request, LogEvent logEvent)
 {
     Request = request;
     LogEvent = logEvent;
 }
Пример #5
0
 private static void OutToConsole(object sender, LogEvent e)
 {
     Console.WriteLine(e);
 }
Пример #6
0
        private static void OutToServer(object sender, LogEvent e)
        {
            if (_tcpClient == null)
            {
                SheduleReconnect();
                return;
            }
            byte[] data = e.Serialize();
            _tcpClientLocker.EnterReadLock();
            try
            {
                _tcpClient.Send(new MessagePacket(data).GetBytesForTransfer());
            }
            catch (Exception ex)
            {
                _logger.Error("Error while sending\r\n" + ex);
            }
            finally
            {
                _tcpClientLocker.ExitReadLock();
            }

        }
Пример #7
0
 private static void OutToHttpServer(object sender, LogEvent e)
 {
     HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://lit-karmazin:80/Temporary_Listen_Addresses/postbinary");
     request.KeepAlive = true;
     request.Method = "POST";
     request.BeginGetRequestStream(OnRequestStreamGot, new GetRequestAsyncState(request,e));
 }
Пример #8
0
 private static void CountEvents(object sender, LogEvent e)
 {
     _logger.Debug(e);
     if (_lastCountEventsCheckPoint.AddMinutes(1) > DateTime.Now)
         Interlocked.Increment(ref _totalEvents);
     else
     {
         lock (_eLock)
         {
             if (_lastCountEventsCheckPoint.AddMinutes(1) <= DateTime.Now)
             {
                 _logger.Info(_totalEvents + " events generated");
                 _totalEvents = 0;
                 _lastCountEventsCheckPoint = DateTime.Now;
             }
         }
     }
 }
 public LogEventArgs(LogEvent logEvent)
 {
     LogEvent = logEvent;
 }
Пример #10
0
        private static void OutToHttpServer(object sender, LogEvent e)
        {
            byte[] data = e.Serialize();
            Uri url = new Uri("http://lit-karmazin:80/Temporary_Listen_Addresses/postbinary");
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.ServicePoint.Expect100Continue = false;
            request.ServicePoint.ConnectionLimit = 2;
            request.ServicePoint.UseNagleAlgorithm = false;
            request.KeepAlive = true;
            request.Method = "POST";
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(data, 0, data.Length);
            requestStream.Flush();
            requestStream.Close();
            
            try
            {
                request.GetResponse();
                requestStream.Dispose();
               
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex);
            }

        }
Пример #11
0
 private static void Main(string[] args)
 {
     LogEvent le = new LogEvent(EventType.Counter, DateTime.Now,"1","1","2","3","","4");
     for (int i = 0; i < 10; i++)
     {
         OutToHttpServer(null, le);    
     }
     
     /*Test12();
     Test14();*/
     Console.WriteLine("Done");
     Console.ReadLine();
 }
Пример #12
0
 private static double SlowPokeParse(LogEvent logEvent)
 {
     Thread.Sleep(50);
     return Double.Parse(logEvent.Value);
 }
Пример #13
0
        public void Push(LogEvent logEvent)
        {
            var props = new Dictionary<string, string>();
            props["cCat"] = logEvent.Category;
            props["cName"] = logEvent.Counter;
            props["src"] = logEvent.Source;
            if (!String.IsNullOrEmpty(logEvent.Instance)) props["instance"] = logEvent.Instance;
            if (!String.IsNullOrEmpty(logEvent.ExtendedData)) props["ext_data"] = logEvent.ExtendedData;
            var aggregationKey = new AggregationKey(logEvent.DateTime.RoundTo(_aggregationPeriod), props);
            /*_events.AddOrUpdate(aggregationKey,
                                new ConcurrentBag<double>() {SlowPokeParse(logEvent)},
                                (key, bag) =>
                                    {
                                        bag.Add(SlowPokeParse(logEvent));
                                        return bag;
                                    });
            */
            var value = Double.Parse(logEvent.Value);
            //_rwLock.EnterReadLock();
            try
            {
                _bag.Add(new Tuple<AggregationKey, double>(aggregationKey, value));
                //_events.GetOrAdd(aggregationKey, new ConcurrentBag<double>()).Add(value);
            }
            finally
            {
              //  _rwLock.ExitReadLock();
            }

        }
Пример #14
0
 public bool CanProcess(LogEvent logEvent)
 {
     return logEvent.Category == _counterCategoryFilter && logEvent.Counter == _counterNameFilter;
 }
Пример #15
0
 public void Push(LogEvent logEvent)
 {
     _eventSubject.OnNext(logEvent);
 }
Пример #16
0
 private CounterGroup CreateCounterGroup(CounterGroup.GroupBy groupBy, LogEvent eventArgs)
 {
     return new CounterGroup(
         eventArgs.Counter,
         groupBy.HasFlag(CounterGroup.GroupBy.Source)? "ALL_SOURCES" : eventArgs.Source,
         groupBy.HasFlag(CounterGroup.GroupBy.Instance) ? "ALL_INSTANCES" : eventArgs.Instance,
         groupBy.HasFlag(CounterGroup.GroupBy.ExtendedData) ? "ALL_EXTDATA" : eventArgs.ExtendedData
         );
 }