public void ReportLogToConsole_Logs_Exception_With_Stacktrace()
        {
            using (StringWriter sw = new StringWriter())
            {
                Console.SetOut(sw);
                string testMessage      = "Test message";
                string exceptionMessage = "Exception Message";

                LoggerReporter reporter = new LoggerReporter();
                LoggerListener.SubscribeListener(reporter);

                //Check for event
                try
                {
                    throwException(exceptionMessage);
                }
                catch (Exception expectedException)
                {
                    LoggerEventArgs arg = new LoggerEventArgs(expectedException, new MessengerEventArgs(testMessage));
                    reporter.ThrowLoggerEvent(arg);
                }

                string expectedWithoutStackTrace = string.Format(exceptionMessage + Environment.NewLine + testMessage + Environment.NewLine);
                Assert.IsTrue(sw.ToString().Contains(exceptionMessage));
                Assert.IsTrue(sw.ToString().Contains(testMessage));
                Assert.IsTrue(sw.ToString().Length > expectedWithoutStackTrace.Length);
            }
        }
        public void ReportLogToConsole_Does_Nothing_If_Logging_Event_Handled()
        {
            using (StringWriter sw = new StringWriter())
            {
                Console.SetOut(sw);
                string testMessage = "Test message";

                LoggerReporter reporter = new LoggerReporter();
                LoggerListener.SubscribeListener(reporter);

                //Check for event
                LoggerEventArgs arg = new LoggerEventArgs(new MessengerEventArgs(testMessage));
                reporter.ThrowLoggerEvent(arg);

                string expected = string.Format(testMessage + Environment.NewLine);
                Assert.AreEqual(expected, sw.ToString());

                // Clear Console output
                StringBuilder sb = sw.GetStringBuilder();
                sb.Remove(0, sb.Length);

                // Check that event does not trigger again
                arg.Handled = true;
                reporter.ThrowLoggerEvent(arg);

                expected = string.Empty;
                Assert.AreEqual(expected, sw.ToString());
            }
        }
        public void ReportLogToConsole_Logs_Parameters()
        {
            using (StringWriter sw = new StringWriter())
            {
                Console.SetOut(sw);
                string testMessage = "Test message";

                string key1   = "Key1:";
                string value1 = "Value1";
                string key2   = "Key2:";
                string value2 = "Value2";

                LoggerReporter reporter = new LoggerReporter();
                LoggerListener.SubscribeListener(reporter);

                //Check for event
                LoggerEventArgs arg = new LoggerEventArgs(new MessengerEventArgs(testMessage),
                                                          key1, value1,
                                                          key2, value2);
                reporter.ThrowLoggerEvent(arg);

                string expected = string.Format(testMessage + Environment.NewLine +
                                                key1 + " " + value1 + Environment.NewLine +
                                                key2 + " " + value2 + Environment.NewLine);
                Assert.AreEqual(expected, sw.ToString());
            }
        }
예제 #4
0
        private void Logger_LogMessage(LoggerEventArgs e)
        {
#if DEBUG
            switch (e.Severity)
            {
            case LogSeverity.Warning:
                Trace.TraceWarning(e.Text);
                break;

            case LogSeverity.Error:
                Trace.TraceError(e.Text);
                break;

            case LogSeverity.Information:
                Trace.TraceInformation(e.Text);
                break;

            case LogSeverity.Command:
                Trace.TraceInformation(e.Text);
                break;

            default:
                // Debug
                Debug.WriteLine(e.Text);
                break;
            }
#else
            var sendEmail = (e.Severity == LogSeverity.Warning || e.Severity == LogSeverity.Error);
            if (e.Severity != LogSeverity.Debug && e.Severity != LogSeverity.Information)
            {
                Lionsguard.Log.Write(e.Text, sendEmail);
            }
#endif
        }
예제 #5
0
        public void Initialize_With_Exception_And_Parameters_Contain_Message_And_Exception_And_Parameters_And_Defaults()
        {
            string key1   = "Key1:";
            string value1 = "Value1";
            string key2   = "Key2:";
            string value2 = "Value2";

            Exception expectedException = new Exception();

            LoggerEventArgs loggerEventArg = new LoggerEventArgs(expectedException,
                                                                 key1, value1,
                                                                 key2, value2);

            Assert.AreEqual(expectedException.Message, loggerEventArg.Message);
            Assert.AreEqual(expectedException, loggerEventArg.Exception);
            Assert.IsTrue(loggerEventArg.Parameters.ContainsKey(key1));
            Assert.AreEqual(value1, loggerEventArg.Parameters[key1]);
            Assert.IsTrue(loggerEventArg.Parameters.ContainsKey(key2));
            Assert.AreEqual(value2, loggerEventArg.Parameters[key2]);

            Assert.AreEqual("", loggerEventArg.Title);
            Assert.AreEqual("", loggerEventArg.Footer);
            Assert.AreEqual("", loggerEventArg.PromptList);
            Assert.AreEqual(defaultAction, loggerEventArg.Action);
            Assert.AreEqual(defaultDefaultAction, loggerEventArg.ActionDefault);
            Assert.AreEqual(defaultActionSet, loggerEventArg.ActionSet);
            Assert.AreEqual(defaultMessageType, loggerEventArg.MessageType);
            Assert.AreEqual(defaultHandled, loggerEventArg.Handled);
        }
        public void Initialize_With_Odd_Number_Of_Parameters_Does_Not_Store_Parameters()
        {
            string key1   = "Key1:";
            string value1 = "Value1";
            string key2   = "Key2:";

            Exception expectedException = new Exception();

            LoggerEventArgs loggerEventArg = new LoggerEventArgs(expectedException,
                                                                 null,
                                                                 key1, value1,
                                                                 key2);

            Assert.AreEqual(string.Empty, loggerEventArg.Message);
            Assert.AreEqual(expectedException.Message, loggerEventArg.Exception.Message);
            Assert.AreEqual(expectedException, loggerEventArg.Exception);
            Assert.IsTrue(loggerEventArg.Parameters.ContainsKey(key1));
            Assert.AreEqual(value1, loggerEventArg.Parameters[key1]);
            Assert.IsFalse(loggerEventArg.Parameters.ContainsKey(key2));

            Assert.AreEqual(string.Empty, loggerEventArg.Title);
            Assert.AreEqual(string.Empty, loggerEventArg.Footer);
            Assert.AreEqual(string.Empty, loggerEventArg.PromptList);
            Assert.AreEqual(defaultAction, loggerEventArg.Action);
            Assert.AreEqual(defaultDefaultAction, loggerEventArg.ActionDefault);
            Assert.AreEqual(defaultActionSet, loggerEventArg.ActionSet);
            Assert.AreEqual(defaultMessageType, loggerEventArg.MessageType);
            Assert.AreEqual(defaultHandled, loggerEventArg.Handled);
        }
예제 #7
0
        private void LogMessage(object sender, LoggerEventArgs e)
        {
            if (ScrollTextBox)
            {
                if (!string.IsNullOrWhiteSpace(Main_Logger.Text))
                {
                    Main_Logger.AppendText(Environment.NewLine);
                }

                Main_Logger.AppendText(e.Message);

                if (Main_Logger.Lines.Length > 1000)
                {
                    Main_Logger.Lines = Main_Logger.Lines.Skip(Main_Logger.Lines.Length - 1000).ToArray();
                }
            }
            else
            {
                if (LoggerLog.Count > 1000)
                {
                    LoggerLog.RemoveRange(0, 1000 - LoggerLog.Count);
                }

                LoggerLog.Add(e.Message);
            }
        }
예제 #8
0
        private void OnLoggerCreated(LoggerEventArgs args)
        {
            var evt = LoggerCreated;

            if (evt != null)
            {
                evt(this, args);
            }
        }
예제 #9
0
 private void OnLoggerCreatedSafe(LoggerEventArgs args)
 {
     try
     {
         this.OnLoggerCreated(args);
     }
     catch (Exception ex)
     {
         InternalLogger.Current.Error("Failed to handle OnLoggerCreated event.", ex);
     }
 }
예제 #10
0
        public void Log(Exception ex)
        {
            //Event
            LoggerEventArgs e = new LoggerEventArgs(this, LogLevel.Debug, ex.ToString(), ex);

            Server.PluginManager.CallEvent(Event.LoggerLog, e);
            // do not allow cancellation or altering of log messages
            //End Event

            Log(LogLevel.Debug, ex.ToString());
        }
예제 #11
0
 private void OnLog(LoggerEventArgs e)
 {
     foreach (EventListener el in Plugins)
     {
         ServerListener sl = (ServerListener)el.Listener;
         if (el.Event == Event.LoggerLog)
         {
             sl.OnLog(e);
         }
     }
 }
예제 #12
0
        public void Log(LogLevel level, string message)
        {
            //Event
            LoggerEventArgs e = new LoggerEventArgs(this, level, message);

            Server.PluginManager.CallEvent(Event.LoggerLog, e);
            // do not allow cancellation or altering of log messages
            //End Event

            LogToConsole(level, message, true);
            LogToFile(level, message, true);
        }
예제 #13
0
        private void Log(object sender, LoggerEventArgs e)
        {
            Run category = new Run("[" + e.Category.ToUpper() + "]: ");

            category.Foreground = new SolidColorBrush(Colors.DarkSlateBlue);
            category.FontWeight = FontWeights.Bold;
            category.FontSize   = 12;
            category.FontFamily = new FontFamily("Consolas");

            Run message = new Run(e.Message);

            switch (e.Level)
            {
            case LogLevel.Debug:
                message.Foreground = new SolidColorBrush(Colors.DarkGray);
                break;

            case LogLevel.Info:
                message.Foreground = new SolidColorBrush(Colors.Black);
                break;

            case LogLevel.Warning:
                message.Foreground = new SolidColorBrush(Colors.Orange);
                message.FontWeight = FontWeights.Bold;
                break;

            case LogLevel.Error:
                message.Foreground = new SolidColorBrush(Colors.Red);
                message.FontWeight = FontWeights.Bold;
                break;

            case LogLevel.Fatal:
                message.Foreground = new SolidColorBrush(Colors.DarkRed);
                message.FontWeight = FontWeights.Bold;
                break;

            default:
                break;
            }
            message.FontSize   = 12;
            message.FontFamily = new FontFamily("Consolas");

            TextBlock log = new TextBlock();

            log.Inlines.Add(category);
            log.Inlines.Add(message);

            LoggerBox.Items.Add(log);
            LoggerBox.ScrollIntoView(log);
        }
예제 #14
0
 private async void log(object sender, LoggerEventArgs eventArgs)
 {
     if (eventArgs.Level != LogLevel.Info)
     {
         await logger.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
         {
             logger.Text = eventArgs.Message + Environment.NewLine + logger.Text;
             if (logger.Text.Length > 1000)
             {
                 logger.Text.Substring(0, 800);
             }
         });
     }
 }
예제 #15
0
        private void showSslInfo(string serverName, SslStream sslStream, bool verbose)
        {
            showCertificateInfo(sslStream.RemoteCertificate, verbose);

            var dateTime = DateTime.Now.ToShortTimeString();

            var args = new LoggerEventArgs("[{0}] SSL Connection Report:{1}" +
                                           " -> Is Authenticated: {2}{1}" +
                                           " -> Is Encrypted: {3}{1}" +
                                           " -> Is Signed: {4}{1}" +
                                           " -> Is Mutually Authenticated: {5}{1}" +
                                           " -> SSL Protocol: {6}", dateTime, Environment.NewLine,
                                           sslStream.IsAuthenticated ? "Yes" : "No",
                                           sslStream.IsEncrypted ? "Yes" : "No",
                                           sslStream.IsSigned ? "Yes" : "No",
                                           sslStream.IsMutuallyAuthenticated ? "Yes" : "No",
                                           Utilities.GetSslProtocolsString(sslStream.SslProtocol));
        }
        public void SubscribeListener_Subsribes_Listener()
        {
            using (StringWriter sw = new StringWriter())
            {
                Console.SetOut(sw);
                string testMessage = "Test message";

                LoggerReporter reporter = new LoggerReporter();
                LoggerListener.SubscribeListener(reporter);

                //Check for event
                LoggerEventArgs arg = new LoggerEventArgs(new MessengerEventArgs(testMessage));
                reporter.ThrowLoggerEvent(arg);

                string expected = string.Format(testMessage + Environment.NewLine);
                Assert.AreEqual(expected, sw.ToString());
            }
        }