Ejemplo n.º 1
0
 protected override void Write(LogEventInfo loggingEvent)
 {
     try
     {
         var renderedEvent  = Layout.Render(loggingEvent);
         var messageBuilder = new GelfMessageBuilder(renderedEvent, HostName, loggingEvent.TimeStamp, ToGelf(loggingEvent.Level))
                              .SetAdditionalField(GelfAdditionalFields.Facility, Facility)
                              .SetAdditionalField(GelfAdditionalFields.LoggerName, loggingEvent.LoggerName);
         if (IncludeSource)
         {
             var userStackFrame = loggingEvent.UserStackFrame;
             if (userStackFrame != null)
             {
                 messageBuilder.SetAdditionalField(GelfAdditionalFields.SourceFileName, userStackFrame.GetFileName());
                 messageBuilder.SetAdditionalField(GelfAdditionalFields.SourceLineNumber, userStackFrame.GetFileLineNumber().ToString(CultureInfo.InvariantCulture));
             }
         }
         if (IncludeStackTrace)
         {
             var exception = loggingEvent.Exception;
             if (exception != null)
             {
                 messageBuilder.SetAdditionalField(GelfAdditionalFields.ExceptionMessage, exception.Message);
                 messageBuilder.SetAdditionalField(GelfAdditionalFields.ExceptionStackTrace, exception.StackTrace);
             }
         }
         transport.Send(messageBuilder.ToMessage());
     }
     catch (Exception exception)
     {
         logger.Error("Failed to send message", exception);
     }
 }
Ejemplo n.º 2
0
 public BufferedTransport(IEasyGelfLogger logger, ITransport transport)
 {
     new Thread(() =>
     {
         var cancellationToken = cancellationTokenSource.Token;
         try
         {
             GelfMessage mesage;
             while (buffer.TryTake(out mesage, -1, cancellationToken))
             {
                 try
                 {
                     transport.Send(mesage);
                 }
                 catch (Exception exception)
                 {
                     logger.Error("Cannot send message", exception);
                 }
             }
         }
         catch
         {
             GelfMessage message;
             while (buffer.TryTake(out message))
             {
                 try
                 {
                     transport.Send(message);
                 }
                 catch (Exception exception)
                 {
                     logger.Error("Cannot send message", exception);
                 }
             }
         }
         transport.Close();
         stopEvent.Set();
     })
     {
         IsBackground = true, Name = "EasyGelf Buffered Transport Thread"
     }.Start();
 }
Ejemplo n.º 3
0
 public BufferedTransport(IEasyGelfLogger logger, ITransport transport)
 {
     new Thread(() =>
         {
             var cancellationToken = cancellationTokenSource.Token;
             try
             {
                 GelfMessage mesage;
                 while (buffer.TryTake(out mesage, -1, cancellationToken))
                 {
                     try
                     {
                         transport.Send(mesage);
                     }
                     catch(Exception exception)
                     {
                         logger.Error("Cannot send message", exception);
                     }
                 }
             }
             catch
             {
                 GelfMessage message;
                 while (buffer.TryTake(out message))
                 {
                     try
                     {
                         transport.Send(message);
                     }
                     catch (Exception exception)
                     {
                         logger.Error("Cannot send message", exception);
                     }
                 }
             }
             transport.Close();
             stopEvent.Set();
         }) {IsBackground = true, Name = "EasyGelf Buffered Transport Thread"}.Start();
 }
Ejemplo n.º 4
0
 public override void ActivateOptions()
 {
     base.ActivateOptions();
     try
     {
         logger = Verbose ? (IEasyGelfLogger) new VerboseLogger() : new SilentLogger();
         var mainTransport = InitializeTransport(logger);
         transport = new BufferedTransport(logger, UseRetry ? new RetryingTransport(logger, mainTransport, RetryCount, RetryDelay) : mainTransport);
     }
     catch (Exception exception)
     {
         logger.Error("Failed to create Transport", exception);
     }
 }
Ejemplo n.º 5
0
 public override void ActivateOptions()
 {
     base.ActivateOptions();
     try
     {
         logger = Verbose ? (IEasyGelfLogger)new VerboseLogger() : new SilentLogger();
         var mainTransport = InitializeTransport(logger);
         transport = new BufferedTransport(logger, UseRetry ? new RetryingTransport(logger, mainTransport, RetryCount, RetryDelay) : mainTransport);
     }
     catch (Exception exception)
     {
         logger.Error("Failed to create Transport", exception);
     }
 }
Ejemplo n.º 6
0
        protected override void Append(LoggingEvent loggingEvent)
        {
            try
            {
                var renderedEvent  = RenderLoggingEvent(loggingEvent);
                var messageBuilder = new GelfMessageBuilder(renderedEvent, HostName, loggingEvent.TimeStamp, loggingEvent.Level.ToGelf())
                                     .SetAdditionalField("facility", Facility)
                                     .SetAdditionalField("loggerName", loggingEvent.LoggerName)
                                     .SetAdditionalField("threadName", loggingEvent.ThreadName)
                                     .SetAdditionalField("userName", loggingEvent.UserName)
                                     .SetAdditionalField("appDomain", loggingEvent.Domain);
                if (IncludeSource)
                {
                    var locationInformation = loggingEvent.LocationInformation;
                    if (locationInformation != null)
                    {
                        messageBuilder.SetAdditionalField("sourceFileName", locationInformation.FileName)
                        .SetAdditionalField("sourceClassName", locationInformation.ClassName)
                        .SetAdditionalField("sourceMethodName", locationInformation.MethodName)
                        .SetAdditionalField("sourceLineNumber", locationInformation.LineNumber);
                    }
                }
                if (IncludeStackTrace)
                {
                    var exception = loggingEvent.ExceptionObject;
                    if (exception != null)
                    {
                        messageBuilder.SetAdditionalField("exceptionType", exception.GetType().FullName);
                        messageBuilder.SetAdditionalField("exceptionMessage", exception.Message);
                        messageBuilder.SetAdditionalField("exceptionStackTrace", exception.StackTrace);
                    }
                }

                if (IncludeEventProperties)
                {
                    var properties = loggingEvent.Properties;
                    foreach (var propertyKey in properties.GetKeys())
                    {
                        messageBuilder.SetAdditionalField(propertyKey, properties[propertyKey]?.ToString());
                    }
                }

                transport.Send(messageBuilder.ToMessage());
            }
            catch (Exception exception)
            {
                logger.Error("Unable to send logging event to remote host", exception);
            }
        }
Ejemplo n.º 7
0
        protected override void Append(LoggingEvent loggingEvent)
        {
            try
            {
                var renderedEvent  = RenderLoggingEvent(loggingEvent);
                var messageBuilder = new GelfMessageBuilder(renderedEvent, HostName, loggingEvent.TimeStamp, loggingEvent.Level.ToGelf())
                                     .SetAdditionalField(GelfAdditionalFields.Facility, Facility)
                                     .SetAdditionalField(GelfAdditionalFields.LoggerName, loggingEvent.LoggerName)
                                     .SetAdditionalField(GelfAdditionalFields.ThreadName, loggingEvent.ThreadName);

                foreach (var item in _staticOutFields)
                {
                    messageBuilder.SetAdditionalField(item.Name, item.Value);
                }

                if (IncludeSource)
                {
                    var locationInformation = loggingEvent.LocationInformation;
                    if (locationInformation != null)
                    {
                        messageBuilder.SetAdditionalField(GelfAdditionalFields.SourceFileName, locationInformation.FileName)
                        .SetAdditionalField(GelfAdditionalFields.SourceClassName, locationInformation.ClassName)
                        .SetAdditionalField(GelfAdditionalFields.SourceMethodName, locationInformation.MethodName)
                        .SetAdditionalField(GelfAdditionalFields.SourceLineNumber, locationInformation.LineNumber);
                    }
                }
                if (IncludeStackTrace)
                {
                    var exception = loggingEvent.ExceptionObject;
                    if (exception != null)
                    {
                        messageBuilder.SetAdditionalField(GelfAdditionalFields.ExceptionMessage, exception.Message);
                        messageBuilder.SetAdditionalField(GelfAdditionalFields.ExceptionStackTrace, exception.StackTrace);
                    }
                }
                transport.Send(messageBuilder.ToMessage());
            }
            catch (Exception exception)
            {
                logger.Error("Unable to send logging event to remote host", exception);
            }
        }
Ejemplo n.º 8
0
        public void Send(GelfMessage message)
        {
            var sendRetryCount = retryCount;

            while (true)
            {
                try
                {
                    transport.Send(message);
                    break;
                }
                catch (Exception exception)
                {
                    sendRetryCount--;
                    if (sendRetryCount <= 0)
                    {
                        throw;
                    }
                    Thread.Sleep(retryDelay);
                    logger.Error("Cannot send message. Retrying...", exception);
                }
            }
        }
Ejemplo n.º 9
0
        public override void ActivateOptions()
        {
            base.ActivateOptions();
            try
            {
                logger = Verbose ? (IEasyGelfLogger)new VerboseLogger() : new SilentLogger();
                var mainTransport = InitializeTransport(logger);
                transport = new BufferedTransport(logger, UseRetry ? new RetryingTransport(logger, mainTransport, RetryCount, RetryDelay) : mainTransport);
                customParams = new Dictionary<string, string>();

                if (!string.IsNullOrEmpty(AdditionalFields))
                    ParseAdditionalFields(AdditionalFields);
            }
            catch (Exception exception)
            {
                logger.Error("Failed to create Transport", exception);
            }
        }