public void AddDoesntThrowWhenLooksLikeFormat()
        {
            var          logglyEvent = new LogglyEvent();
            const string logMessage  = "a message that looks like it should have arg params {0}";

            logglyEvent.Data.Add("message", logMessage);
        }
        public LogglyEvent CreateLogglyEvent(LogEvent logEvent)
        {
            var logglyEvent = new LogglyEvent()
            {
                Timestamp = logEvent.Timestamp
            };

            var isHttpTransport = LogglyConfig.Instance.Transport.LogTransport == LogTransport.Https;

            logglyEvent.Syslog.Level = ToSyslogLevel(logEvent);


            logglyEvent.Data.AddIfAbsent("Message", logEvent.RenderMessage(_formatProvider));

            foreach (var key in logEvent.Properties.Keys)
            {
                var propertyValue = logEvent.Properties[key];
                var simpleValue   = LogglyPropertyFormatter.Simplify(propertyValue, _formatProvider);
                logglyEvent.Data.AddIfAbsent(key, simpleValue);
            }

            if (isHttpTransport)
            {
                // syslog will capture these via the header
                logglyEvent.Data.AddIfAbsent("Level", logEvent.Level.ToString());
            }

            if (logEvent.Exception != null)
            {
                logglyEvent.Data.AddIfAbsent("Exception", logEvent.Exception);
            }
            return(logglyEvent);
        }
Example #3
0
        static void Main(string[] args)
        {
            ExcludeFields ef = new ExcludeFields()
            {
                FirstName = "Jack", LastName = "Makan", EmployeeID = 100, Designation = "SSE", Address = "United States"
            };
            List <string> discardedFieldsList = new List <string>();

            discardedFieldsList.Add("FirstName");
            discardedFieldsList.Add("Designation");
            discardedFieldsList.Add("Address");
            var log = new LoggerConfiguration()
                      .WriteTo.Loggly()
                      .CreateLogger();
            ILogglyClient _loggly  = new LogglyClient();
            var           logEvent = new LogglyEvent();

            logEvent.Data.Add("message", "Simple message at {0}");
            logEvent.Data.Add("context", ef.excludeFields(JsonConvert.SerializeObject(ef), discardedFieldsList));
            logEvent.Data.Add("Error", new Exception("your exception message"));
            for (int i = 0; i < 10; i++)
            {
                _loggly.Log(logEvent);
            }
            Console.ReadKey();
        }
Example #4
0
        public static void Log(string message, Exception exception = null,
                               object additional = null, string language = null)
        {
            if (_client == null)
            {
                _client = GetClient();
            }

            var logEvent = new LogglyEvent();

            logEvent.Data.Add("version", GetExecutingAssemblyVersion());
            logEvent.Data.Add("message", message);

            if (exception != null)
            {
                logEvent.Data.Add("exception", exception);
            }

            if (additional != null)
            {
                logEvent.Data.Add("additional", additional);
            }

            _client.Log(logEvent);
        }
Example #5
0
        public App()
        {
            var LogEvent = new LogglyEvent();

            LogEvent.Data.Add("App Start detected", "{0}: Welcome new user!", DateTime.Now);
            fLoggly.Log(LogEvent);
        }
        public void SendAsync()
        {
            var logEvent = new LogglyEvent();

            logEvent.Data.Add("message", "Asynchronous message at {0} using {1}", DateTime.Now, LogglyConfig.Instance.Transport.LogTransport);
            _loggly.Log(logEvent).ConfigureAwait(false);
        }
        public async Task <LogResponse> SendCustomObjectAsync()
        {
            var logEvent = new LogglyEvent();

            logEvent.Data = new LogObject();
            return(await _loggly.Log(logEvent).ConfigureAwait(false));
        }
Example #8
0
 public void SendAsync()
 {
     var logEvent = new LogglyEvent();
     logEvent.Data.Add("message", "Asynchronous message at {0} using {1}", DateTime.Now, LogglyConfig.Instance.Transport.LogTransport);
     logEvent.Options.Tags.Add("mycustomtag");
     _loggly.Log(logEvent).ConfigureAwait(false);
 }
Example #9
0
 /// <summary>
 /// Calling result on the task forces it to be synchronous
 /// </summary>
 public ResponseCode SendPlainMessageSynchronous()
 {
     var logEvent = new LogglyEvent();
     logEvent.Data.Add("message", "Synchronous message at {0} using {1}", DateTime.Now, LogglyConfig.Instance.Transport.LogTransport);
     var r = _loggly.Log(logEvent).Result;
     return r.Code;
 }
Example #10
0
 public Task <LogResponse> Log(LogglyEvent logglyEvent)
 {
     LogglyEvents.Add(logglyEvent);
     return(Task.FromResult(new LogResponse()
     {
         Code = ResponseCode.Success
     }));
 }
        /// <summary>
        /// Calling result on the task forces it to be synchronous
        /// </summary>
        public ResponseCode SendPlainMessageSynchronous()
        {
            var logEvent = new LogglyEvent();

            logEvent.Data.Add("message", "Synchronous message at {0} using {1}", DateTime.Now, LogglyConfig.Instance.Transport.LogTransport);
            var r = _loggly.Log(logEvent).Result;

            return(r.Code);
        }
        public void SendWithAttributes()
        {
            var logEvent = new LogglyEvent();

            logEvent.Data.Add("message", "Message with attributes");
            logEvent.Data.Add("context", new LogObject());

            _loggly.Log(logEvent);
        }
Example #13
0
        public void SendWithAttributes()
        {
            var logEvent = new LogglyEvent();

            logEvent.Data.Add("message", "Message with attributes");
            logEvent.Data.Add("context", new LogObject());

            _loggly.Log(logEvent);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ClientAppSettingsController"/> class.
 /// </summary>
 /// <param name="options"></param>
 /// <param name="logglyClient"></param>
 public ClientAppSettingsController(IOptions <ApplicationOptions> options, ILogglyClient logglyClient)
 {
     _configurationOptions = options.Value;
     _logglyClient         = logglyClient;
     _logglyEvent          = new LogglyEvent();
     _logglyEvent.Options.Tags.Add(new SimpleTag {
         Value = "ClientAppSettings"
     });
 }
        protected override void Write(LogEventInfo logEvent)
        {
            var loggly = new LogglyClient();

            // The unwrapped event has a zero sequenceId, grab it before unwrapping;
            var sequenceId = logEvent.SequenceID;

            logEvent = GetCorrectEvent(logEvent);

            if (logEvent.Properties.ContainsKey("syslog-suppress"))
            {
                /*
                 * logging delimiting messages like "--------------" makes sense for pretty printing to file log targets
                 * but not so much for loggly. Support suppression.
                 */
                return;
            }

            var logMessage = Layout.Render(logEvent);

            var logglyEvent     = new LogglyEvent();
            var isHttpTransport = LogglyConfig.Instance.Transport.LogTransport == LogTransport.Https;

            logglyEvent.Timestamp        = logEvent.TimeStamp;
            logglyEvent.Syslog.MessageId = sequenceId;
            logglyEvent.Syslog.Level     = ToSyslogLevel(logEvent.Level);

            if (logEvent.Exception != null)
            {
                logglyEvent.Data.Add("exception", logEvent.Exception);
            }

            if (isHttpTransport)
            {
                // syslog will capture these via the header
                logglyEvent.Data.Add("sequenceId", sequenceId);
                logglyEvent.Data.Add("level", logEvent.Level.Name);
            }

            logglyEvent.Data.Add("message", logMessage);
            foreach (var tag in Tags.Split(','))
            {
                logglyEvent.Options.Tags.Add(new SimpleTag {
                    Value = tag
                });
            }

            foreach (var key in logEvent.Properties.Keys)
            {
                logglyEvent.Data.AddIfAbsent(key.ToString(), logEvent.Properties[key]);
            }

            loggly.Log(logglyEvent);
        }
Example #16
0
        public void CtorWithMessageDataIsSet()
        {
            var messageData = MessageData.FromDictionary(new Dictionary <string, object>
            {
                { "key1", "value" },
                { "key2", "value" }
            });

            var logglyEvent = new LogglyEvent(messageData);

            Assert.That(logglyEvent.Data, Is.EqualTo(messageData));
        }
Example #17
0
        public static void Log(Exception e)
        {
            if (_client == null)
            {
                _client = GetClient();
            }

            var logEvent = new LogglyEvent();

            logEvent.Data.Add("version", GetExecutingAssemblyVersion());
            logEvent.Data.Add("exception", e);
            _client.Log(logEvent);
        }
Example #18
0
        public static void Log(object log)
        {
            if (_client == null)
            {
                _client = GetClient();
            }

            var logEvent = new LogglyEvent();

            logEvent.Data.Add("version", GetExecutingAssemblyVersion());
            logEvent.Data.Add("message", log);
            _client.Log(logEvent);
        }
Example #19
0
        public async void SendWithSpecificTransport(LogTransport transport)
        {
            var priorTransport = LogglyConfig.Instance.Transport;

            var newTransport = new TransportConfiguration {LogTransport = transport};
            LogglyConfig.Instance.Transport = newTransport.GetCoercedToValidConfig();

            var logEvent = new LogglyEvent();
            logEvent.Data.Add("message", "Log event sent with forced transport={0}", transport);
            await _loggly.Log(logEvent);

            LogglyConfig.Instance.Transport = priorTransport;
        }
Example #20
0
        private static LogglyEvent Translate(TraceEventType eventType, LogEntry entry)
        {
            var logglyEvent = new LogglyEvent
            {
                Syslog =
                {
                    Level = MapLevel(eventType)
                }
            };

            logglyEvent.Data.Add("C1_Logmessage", entry);

            return(logglyEvent);
        }
        public async void SendWithSpecificTransport(LogTransport transport)
        {
            var priorTransport = LogglyConfig.Instance.Transport;

            var newTransport = new TransportConfiguration {
                LogTransport = transport
            };

            LogglyConfig.Instance.Transport = newTransport.GetCoercedToValidConfig();

            var logEvent = new LogglyEvent();

            logEvent.Data.Add("message", "Log event sent with forced transport={0}", transport);
            await _loggly.Log(logEvent);

            LogglyConfig.Instance.Transport = priorTransport;
        }
        public void MonitorLog(string pLogFilePath)
        {
            Messenger.Default.Send <GenericMessage>(new GenericMessage()
            {
                Message = "Validating Log File"
            });
            if (File.Exists(pLogFilePath))
            {
                var LogEvent = new LogglyEvent();
                LogEvent.Data.Add("Monitor Log", "{0}: valid Logfile={1}", DateTime.Now, pLogFilePath);
                fLoggly.Log(LogEvent);

                Properties.Settings.Default.LogFile = pLogFilePath;
                Properties.Settings.Default.Save();
                var DirectoryPath = Path.GetDirectoryName(pLogFilePath);
                var FileName      = Path.GetFileName(pLogFilePath);


                Messenger.Default.Send <GenericMessage>(new GenericMessage()
                {
                    Message = "Starting Initial Log Parse"
                });
                onChanged(this, new FileSystemEventArgs(WatcherChangeTypes.All, DirectoryPath, FileName));
                Messenger.Default.Send <GenericMessage>(new GenericMessage()
                {
                    Message = "Finished. Monitoring now..."
                });

                fFileWatcher.Path                = DirectoryPath;
                fFileWatcher.Filter              = FileName;
                fFileWatcher.NotifyFilter        = NotifyFilters.LastWrite;
                fFileWatcher.Changed            += new FileSystemEventHandler(onChanged);
                fFileWatcher.EnableRaisingEvents = true;
            }
            else
            {
                Messenger.Default.Send <GenericMessage>(new GenericMessage()
                {
                    Message = "I don't think you entered a valid Log File, try again?"
                });
                var LogEvent = new LogglyEvent();
                LogEvent.Data.Add("Monitor Log", "{0}: Invalid Logfile={1}", DateTime.Now, pLogFilePath);
                fLoggly.Log(LogEvent);
            }
        }
Example #23
0
        public async Task SelfReferencingLoopShouldNotFailMessageSerialization()
        {
            var transportMock = new Mock <IMessageTransport>();

            transportMock.Setup(x => x.Send(It.IsAny <IEnumerable <LogglyMessage> >()))
            .Callback((IEnumerable <LogglyMessage> x) => x.ToList())    //making sure the messages are evaluated
            .Returns(() => Task.FromResult(new LogResponse {
                Code = ResponseCode.Success
            }));

            var logglyEvent = new LogglyEvent();

            logglyEvent.Data.AddIfAbsent("ReferenceLoopType", new TypeWithReferenceLoopParent());

            var client = new LogglyClient(transportMock.Object);

            var res = await client.Log(logglyEvent);

            Assert.AreEqual(ResponseCode.Success, res.Code);
        }
Example #24
0
        public void LogglyClientSendException()
        {
            var config = LogglyConfig.Instance;

            config.CustomerToken   = "83fe7674-f87d-473e-a8af-bbbbbbbbbbbb";
            config.ApplicationName = $"test";

            config.Transport.EndpointHostname = "logs-01.loggly.com";
            config.Transport.EndpointPort     = 443;
            config.Transport.LogTransport     = LogTransport.Https;

            var ct = new ApplicationNameTag {
                Formatter = "application-{0}"
            };

            config.TagConfig.Tags.Add(ct);
            var logglyClient = new LogglyClient();


            try
            {
                ThrowException();
            }
            catch (Exception e)
            {
                LogglyEvent logglyEvent = new LogglyEvent
                {
                    Timestamp = DateTimeOffset.UtcNow,
                    Syslog    = { Level = Level.Emergency }
                };
                logglyEvent.Data.AddIfAbsent("Message", "xZx");
                logglyEvent.Data.AddIfAbsent("Level", "Error");
                logglyEvent.Data.AddIfAbsent("Exception", e);

                var res = logglyClient.Log(logglyEvent).Result;
                Assert.Equal(ResponseCode.Success, res.Code);
            }
            Thread.Sleep(5000);
        }
Example #25
0
 public async Task<LogResponse> SendCustomObjectAsync()
 {
     var logEvent = new LogglyEvent();
     logEvent.Data = new LogObject();
     return await _loggly.Log(logEvent).ConfigureAwait(false);
 }
 public static void Log(LogglyEvent logglyEvent)
 {
     Client.Log(logglyEvent);
 }
Example #27
0
        public LogglyEvent ConvertToLogglyEvent(LogEventInfo logEvent)
        {
            if (logEvent.HasProperties && logEvent.Properties.ContainsKey("syslog-suppress"))
            {
                /*
                 * logging delimiting messages like "--------------" makes sense for pretty printing to file log targets
                 * but not so much for loggly. Support suppression.
                 */
                return(null);
            }

            var logMessage = RenderLogEvent(Layout, logEvent) ?? string.Empty;

            var logglyEvent     = new LogglyEvent();
            var isHttpTransport = LogglyConfig.Instance.Transport.LogTransport == LogTransport.Https;

            logglyEvent.Timestamp        = logEvent.TimeStamp;
            logglyEvent.Syslog.MessageId = logEvent.SequenceID;
            logglyEvent.Syslog.Level     = ToSyslogLevel(logEvent.Level);

            if (logEvent.Exception != null)
            {
                logglyEvent.Data.Add("exception", (object)logEvent.Exception);
            }

            if (isHttpTransport)
            {
                // syslog will capture these via the header
                logglyEvent.Data.Add("sequenceId", (object)logEvent.SequenceID);
                logglyEvent.Data.Add("level", (object)logEvent.Level.Name);
            }

            for (int i = 0; i < Tags.Count; ++i)
            {
                string tagName = RenderLogEvent(Tags[i].Name, logEvent);
                if (!string.IsNullOrEmpty(tagName))
                {
                    logglyEvent.Options.Tags.Add(tagName);
                }
            }

            logglyEvent.Data.Add("message", (object)logMessage);

            if (ShouldIncludeProperties(logEvent))
            {
                var properties = GetAllProperties(logEvent);
                foreach (var prop in properties)
                {
                    if (string.IsNullOrEmpty(prop.Key))
                    {
                        continue;
                    }

                    logglyEvent.Data.AddIfAbsent(prop.Key, prop.Value);
                }
            }
            else
            {
                for (int i = 0; i < ContextProperties.Count; ++i)
                {
                    var contextKey = ContextProperties[i].Name;
                    if (string.IsNullOrEmpty(contextKey))
                    {
                        continue;
                    }

                    var contextValue = RenderLogEvent(ContextProperties[i].Layout, logEvent);
                    if (string.IsNullOrEmpty(contextValue) && !ContextProperties[i].IncludeEmptyValue)
                    {
                        continue;
                    }

                    logglyEvent.Data.AddIfAbsent(contextKey, contextValue);
                }
            }

            return(logglyEvent);
        }
        private void onChanged(object pSender, FileSystemEventArgs pFileSystemEventArgs)
        {
            string Line = string.Empty;

            try
            {
                var fs = new FileStream(pFileSystemEventArgs.FullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                fs.Position = Position;
                using (StreamReader sr = new StreamReader(fs))
                {
                    while ((Line = sr.ReadLine()) != null)
                    {
                        if (!FirstTime && Line.Contains("'"))
                        {
                            string   vPlayerMessage = Line.Substring(Line.IndexOf("'")); vPlayerMessage = vPlayerMessage.Trim('\'');
                            string[] vTokens        = vPlayerMessage.Split(' ');
                            int      vBid           = 0;
                            if (vTokens != null && vTokens.Length > 0 && int.TryParse(vTokens[0], out vBid))
                            {
                                if (vBid >= 75)
                                {
                                    //Get Player Name
                                    string noTimestamp = Line.Substring(Line.IndexOf("]") + 2);
                                    string playerName  = noTimestamp.Split(' ')[0];
                                    if (playerName.Equals("you", StringComparison.OrdinalIgnoreCase))
                                    {
                                        string vFileName = Path.GetFileNameWithoutExtension(pFileSystemEventArgs.FullPath);
                                        playerName = vFileName.Split('_')[1];
                                    }
                                    //Bidding for PALT?
                                    if (noTimestamp.ToLower().Contains("palt") && vTokens.Length > 2)
                                    {
                                        playerName = vTokens[2];
                                    }

                                    playerName = char.ToUpper(playerName[0]) + playerName.Substring(1);
                                    string playerBid  = vBid.ToString();
                                    var    vPlayerDKP = DKPService.Instance.GuildRoster.SingleOrDefault <MadeMan>(s => s.Name.Equals(playerName, StringComparison.OrdinalIgnoreCase));
                                    if (vPlayerDKP == null)
                                    {
                                        Messenger.Default.Send <GenericMessage>(new GenericMessage()
                                        {
                                            Message = string.Format("{0} {1} (no dkp info available)", playerName, vBid)
                                        });
                                    }
                                    else
                                    {
                                        Messenger.Default.Send <GenericMessage>(new GenericMessage()
                                        {
                                            Message = string.Format("{0} {1} (RANK = {2}, RA = {3}, DKP = {4})", playerName, playerBid, vPlayerDKP.Rank, vPlayerDKP.RA, vPlayerDKP.DKP)
                                        });
                                    }
                                }
                            }
                        }
                    }
                    Position  = fs.Position;
                    FirstTime = false;
                }
            }
            catch (Exception ex)
            {
                Messenger.Default.Send <GenericMessage>(new GenericMessage()
                {
                    Message = "Critical Error detected: " + Environment.NewLine + Line
                });
                var LogEvent = new LogglyEvent();
                LogEvent.Data.Add("Monitor Log Catch All", "{0}:{1}", DateTime.Now, ex);
                fLoggly.Log(LogEvent);
            }
        }
 public void AddDoesntThrowWhenLooksLikeFormat()
 {
     var logglyEvent = new LogglyEvent();
     const string logMessage  = "a message that looks like it should have arg params {0}";
     logglyEvent.Data.Add("message", logMessage);
 }
Example #30
0
        public void GetDKPInformation()
        {
            fGuildRoster.Clear();
            string html = string.Empty;
            string url  = @"http://modestman.club/dkp";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.AutomaticDecompression = DecompressionMethods.GZip;

            try
            {
                try
                {
                    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                        using (Stream stream = response.GetResponseStream())
                            using (StreamReader reader = new StreamReader(stream))
                            {
                                html = reader.ReadToEnd();
                                Properties.Settings.Default.DkpInfo = html;
                                Properties.Settings.Default.Save();
                                Messenger.Default.Send <GenericMessage>(new GenericMessage()
                                {
                                    Message = "Was able to get the latest DKP successfully"
                                });
                            }
                }
                catch (Exception)
                {
                    Messenger.Default.Send <GenericMessage>(new GenericMessage()
                    {
                        Message = "Was NOT able to get the latest DKP, using last known data on file"
                    });
                    var LogEvent = new LogglyEvent();
                    LogEvent.Data.Add("Fetching DKP", "{0}: Error fetching latest DKP, site must be down", DateTime.Now);
                    fLoggly.Log(LogEvent);
                    html = Properties.Settings.Default.DkpInfo;
                }
                var htmlDoc = new HtmlDocument();
                htmlDoc.LoadHtml(html);

                HtmlNodeCollection playerList = htmlDoc.DocumentNode.SelectNodes("//table[@class=\"table fullwidth trcheckboxclick hptt colorswitch scrollable-x\"]/tr");

                foreach (HtmlNode player in playerList)
                {
                    if (player.ChildNodes.Count >= 9 && !player.ChildNodes[3].InnerText.Trim().Equals("Name"))
                    {
                        MadeMan vMadeMan = new MadeMan()
                        {
                            Name = player.ChildNodes[3].InnerText,
                            Rank = player.ChildNodes[5].InnerText,
                            DKP  = player.ChildNodes[7].InnerText,
                            RA   = player.ChildNodes[9].InnerText,
                        };
                        fGuildRoster.Add(vMadeMan);
                    }
                }
            }
            catch (Exception e)
            {
                //Typically bad practice to catch all, but f**k it
                Messenger.Default.Send <GenericMessage>(new GenericMessage()
                {
                    Message = "Critical Error in DKPService"
                });
                var LogEvent = new LogglyEvent();
                LogEvent.Data.Add("Catch All DKP", "{0}:{1}", DateTime.Now, e);
                fLoggly.Log(LogEvent);
            }
        }