コード例 #1
0
        internal SyslogMessage ConstructSyslog(LogglyMessage message)
        {
            var appNameSafe = LogglyConfig.Instance.ApplicationName ?? string.Empty;
            
            var syslogMessage = new SyslogMessage();

            syslogMessage.Facility = Facility.User;
            syslogMessage.Text = message.Content;
            syslogMessage.Level = message.Syslog.Level;
            syslogMessage.MessageId = message.Syslog.MessageId;
            syslogMessage.AppName = appNameSafe.Replace(" ", "");
            syslogMessage.Timestamp = message.Timestamp;

            var tags = RenderedTags;
            var tagSpacer = string.IsNullOrEmpty(RenderedTags) ? string.Empty : " ";

            syslogMessage.Text = string.Format(
                                    "[{0}@41058{1}{2}] {3}"
                                    , LogglyConfig.Instance.CustomerToken
                                    , tagSpacer
                                    , tags
                                    , message.Content);

            return syslogMessage;
        }
コード例 #2
0
        internal SyslogMessage ConstructSyslog(LogglyMessage message, IEnumerable<string> tags = null)
        {
            var appNameSafe = LogglyConfig.Instance.ApplicationName ?? string.Empty;
            
            var syslogMessage = new SyslogMessage();

            syslogMessage.Facility = Facility.User;
            syslogMessage.Text = message.Content;
            syslogMessage.Level = message.Syslog.Level;
            syslogMessage.MessageId = message.Syslog.MessageId;
            syslogMessage.AppName = appNameSafe.Replace(" ", "");
            syslogMessage.Timestamp = message.Timestamp;

            var effectiveTags = RenderedTags ?? "";
            if (tags != null)
            {
                var customTags = tags.ToList();
                if (customTags.Count > 0)
                {
                    if (!string.IsNullOrEmpty(effectiveTags))
                        effectiveTags += ",";
                    effectiveTags += string.Join(",", customTags);
                }
            }
            var tagSpacer = string.IsNullOrEmpty(RenderedTags) ? string.Empty : " ";

            syslogMessage.Text = string.Format(
                                    "[{0}@41058{1}{2}] {3}"
                                    , LogglyConfig.Instance.CustomerToken
                                    , tagSpacer
                                    , effectiveTags
                                    , message.Content);

            return syslogMessage;
        }
コード例 #3
0
        public void SyslogContentWithTags()
        {
            LogglyConfig.Instance.CustomerToken = "MyLogglyToken";

            var transport = new SyslogTcpTransport();
            var logglyMessage = new LogglyMessage();

            logglyMessage.Content = "myContent";

            var syslog = transport.ConstructSyslog(logglyMessage);

            Assert.AreEqual("[MyLogglyToken@41058 tag=\"myTag\"] myContent", syslog.Text);
        }
コード例 #4
0
        public void SyslogContentWhenNoTags()
        {
            LogglyConfig.Instance.Tags.SimpleTags.Clear();

            var transport = new SyslogTcpTransport();
            var logglyMessage = new LogglyMessage();

            logglyMessage.Content = "myContent";

            var syslog = transport.ConstructSyslog(logglyMessage);

            Assert.AreEqual("[MyLogglyToken@41058] myContent", syslog.Text);
        }
コード例 #5
0
        public async Task SendsSingleMessageToInputApi()
        {
            var message = new LogglyMessage { Content = "Test1", CustomTags = { new SimpleTag { Value = "TestTag" } } };

            var response = await _transport.Send(new[] { message });

            Assert.AreEqual("https://test/inputs/MyLogglyToken", _requestUri.ToString());

            Assert.AreEqual("myTag,TestTag", _tags);

            Assert.AreEqual("Test1", _requestContent);

            Assert.AreEqual(ResponseCode.Success, response.Code);
        }
コード例 #6
0
        public async Task Messages_are_published_to_url_with_Environment([Frozen] LogglyOptions options, IFixture fixture, LogglyMessage message)
        {
            var registration = new HttpMessageOptions
            {
                HttpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK),
                HttpMethod          = HttpMethod.Post
            };

            var handler = new FakeHttpMessageHandler(registration);

            fixture.Register((LogglyOptions o) => new HttpClient(handler)
            {
                BaseAddress = new Uri($"{o.LogglyScheme}://{o.LogglyHost}")
            });

            var sut = fixture.Create <LogglyHttpClient>();

            await sut.PublishAsync(message);

            Assert.That(registration.HttpResponseMessage.RequestMessage.RequestUri.AbsolutePath, Contains.Substring(options.Environment));
        }
コード例 #7
0
        public async Task ErrorResponseIsHandled()
        {
            var message = new LogglyMessage { Content = "Test1", CustomTags = { new SimpleTag { Value = "triggerError" } } };

            var response = await _transport.Send(new[] { message });

            Assert.AreEqual("https://test/inputs/MyLogglyToken", _requestUri.ToString());

            
            Assert.AreEqual(ResponseCode.Error, response.Code);
        }
コード例 #8
0
        public void Message_is_not_published_after_adding_to_queue_when_disposed([Frozen] ILogglyClient client, LogglyProcessor sut, LogglyMessage message)
        {
            sut.Dispose();

            sut.EnqueueMessage(message);

            Mock.Get(client).Verify(p => p.PublishAsync(message), Times.Never);
        }
コード例 #9
0
        public async Task Message_is_published_after_adding_to_queue([Frozen] ILogglyClient client, LogglyProcessor sut, LogglyMessage message)
        {
            sut.EnqueueMessage(message);

            await Task.Delay(TimeSpan.FromMilliseconds(100));

            Mock.Get(client).Verify(p => p.PublishManyAsync(It.Is <IEnumerable <LogglyMessage> >(m => m.Contains(message))));
        }