Exemplo n.º 1
0
        public void Log_writes_xml_to_output_stream()
        {
            var stream = new MemoryStream();
              var writer = new StreamWriter(stream);

              var fileLogWriter = new FileLogWriter((dir, file) => writer);

              const LogLevel level = LogLevel.Error;
              const String message = "Test";

              fileLogWriter.Log(level, message);

              stream.Seek(0, SeekOrigin.Begin);

              var lDocument = new XmlDocument();
              using (var xmlReader = XmlReader.Create(stream, new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment }))
              {
            lDocument.Load(xmlReader);
              }

              var lRootElement = lDocument.FirstChild as XmlElement;
              Assert.IsNotNull(lRootElement);
              Assert.AreEqual(level.ToString().ToLower(), lRootElement.Name);

              Assert.IsTrue(lRootElement.HasAttribute(Resources.TimestampAttributeName));

              // Check timestamp attribute contains a parseable datetime representation.
              // The actual value isn't important and will change each time the test is run anyway.
              DateTime datetime;
              Assert.IsTrue(DateTime.TryParse(lRootElement.GetAttribute(Resources.TimestampAttributeName), out datetime));

              Assert.IsTrue(lRootElement.HasAttribute(Resources.MessageAttributeName));
              Assert.AreEqual(message, lRootElement.GetAttribute(Resources.MessageAttributeName));
        }
Exemplo n.º 2
0
        public void Log_flushes_output_stream()
        {
            var writer = Substitute.For<TextWriter>();

              var fileLogWriter = new FileLogWriter((dir, file) => writer);

              fileLogWriter.Log(LogLevel.Error, null);

              writer.Received().Flush();
        }
Exemplo n.º 3
0
        public App()
        {
            if (s_instanceMutex.WaitOne(TimeSpan.Zero, true))
            {
                s_ownsInstanceMutex = true;
            }
            else
            {
                s_ownsInstanceMutex = false;
                MessageBox.Show("The application is already running.", "MultiClip", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                Environment.Exit(0);
            }

            DispatcherUnhandledException += OnDispatcherUnhandledException;
            AppDomain.CurrentDomain.UnhandledException += OnDomainUnhandledException;

            // Set up the default logger instance.
            LogLevel      logLevel;
            ILogFormatter logFormatter;
            ILogWriter    logWriter = new FileLogWriter(Environment.ExpandEnvironmentVariables("%localappdata%\\MultiClip\\Logs.txt"), Encoding.UTF8);

#if DEBUG
            logLevel     = LogLevel.Trace;
            logFormatter = new JsonLogFormatter(Formatting.Indented);
#else
            logLevel     = LogLevel.Information;
            logFormatter = new JsonLogFormatter(Formatting.None);
#endif
            Logger.Default = new Logger(logLevel, logFormatter, logWriter);

            // Set up the global application state.
            AppState.Current = new AppState
            {
                UserSettings    = UserSettings.LoadFromDisk(),
                ClipboardStates = new ObservableCollection <Clipboard.ClipboardState>(),
            };

            // Set the required registry keys.
            SetRegistryValues();
        }
Exemplo n.º 4
0
        public void Log_writes_xml_to_output_stream()
        {
            var stream = new MemoryStream();
            var writer = new StreamWriter(stream);

            var fileLogWriter = new FileLogWriter((dir, file) => writer);

            const LogLevel level   = LogLevel.Error;
            const String   message = "Test";

            fileLogWriter.Log(level, message);

            stream.Seek(0, SeekOrigin.Begin);

            var lDocument = new XmlDocument();

            using (var xmlReader = XmlReader.Create(stream, new XmlReaderSettings {
                ConformanceLevel = ConformanceLevel.Fragment
            }))
            {
                lDocument.Load(xmlReader);
            }

            var lRootElement = lDocument.FirstChild as XmlElement;

            Assert.IsNotNull(lRootElement);
            Assert.AreEqual(level.ToString().ToLower(), lRootElement.Name);

            Assert.IsTrue(lRootElement.HasAttribute(Resources.TimestampAttributeName));

            // Check timestamp attribute contains a parseable datetime representation.
            // The actual value isn't important and will change each time the test is run anyway.
            DateTime datetime;

            Assert.IsTrue(DateTime.TryParse(lRootElement.GetAttribute(Resources.TimestampAttributeName), out datetime));

            Assert.IsTrue(lRootElement.HasAttribute(Resources.MessageAttributeName));
            Assert.AreEqual(message, lRootElement.GetAttribute(Resources.MessageAttributeName));
        }
Exemplo n.º 5
0
        public void Write(string category, string source, Exception exception)
        {
            if (exception == null)
            {
                return;
            }
            Guid id = Guid.NewGuid();

            LogEntity log = new LogEntity();

            log.Id       = id;
            log.Category = category;
            log.Source   = source;
            log.Type     = (short)LogType.Error;
            log.Message  = exception.Message;

            LogDetailEntity logDetail = new LogDetailEntity();

            logDetail.Id        = id;
            logDetail.LogDetail = LogHelper.GetExceptionMessage(exception);

            try
            {
                using (ILHDBTran tran = BeginTran())
                {
                    LogManager manager = new LogManager(tran);
                    manager.AddLog(log);
                    manager.AddLogDetail(logDetail);
                    tran.Commit();
                }
            }
            catch (Exception ex)
            {
                FileLogWriter writer = new FileLogWriter();
                writer.Write(LogCategory.LogWrite, "Write log to database", ex);
                writer.Write(category, source, exception);
            }
        }
Exemplo n.º 6
0
        public void FallbackWriteTest()
        {
            FileLogWriter target;
            //FileLogWriter_Accessor accessor;
            TestLogWriter fallbackWriter = new TestLogWriter();

            target = new FileLogWriter(Path.Combine(TestContext.DeploymentDirectory, "testlog.txt"), LogSyncMode.Message, fallbackWriter);

            // Writing should be successful, fallback write should not be called.
            target.WriteLine("Hello");
            Assert.IsFalse(fallbackWriter.FlushWasInvoked);
            Assert.IsFalse(fallbackWriter.WriteLineWasInvoked);
            Assert.IsFalse(fallbackWriter.WriteWasInvoked);

            target = new FileLogWriter("c:\\this_dir_does_not_exist\\testlog.txt", LogSyncMode.Message, fallbackWriter);
            // First time printing will cause an exception and will print to the fallback writer.
            target.WriteLine("Hello");
            Assert.IsTrue(fallbackWriter.WriteWasInvoked);

            // At this point the fallback writer has an exception message from the Open operation.
            fallbackWriter.ResetInvocationIndicators();
            fallbackWriter.ClearOutput();

            target.WriteLine("Hello");
            string expected = "Hello" + "$n";
            string actual   = fallbackWriter.Output.ToString().Replace(Environment.NewLine, "$n");

            Assert.AreEqual(expected, actual);

            fallbackWriter.ResetInvocationIndicators();
            fallbackWriter.ClearOutput();

            target.Write("Hello");
            expected = "Hello";
            actual   = fallbackWriter.Output.ToString().Replace(Environment.NewLine, "$n");
            Assert.AreEqual(expected, actual);
        }
Exemplo n.º 7
0
        public void TestWriteToLogFile()
        {
            var tmpFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData)
                            + @"\" + Guid.NewGuid().ToString();

            var conf = new MonitorConfiguration()
            {
                LogLevel    = "Info",
                LogFilePath = tmpFolder + @"\test.log"
            };

            var logWriter = new FileLogWriter(conf);

            String logContent = Guid.NewGuid().ToString();

            logWriter.Write(LogLevel.Info, logContent);

            Assert.IsTrue(File.Exists(conf.LogFilePath));
            String log = File.ReadAllText(conf.LogFilePath);

            Assert.IsTrue(log.Contains(logContent));

            Directory.Delete(tmpFolder, true);
        }
Exemplo n.º 8
0
        public void Log_silently_does_nothing_if_stream_is_null()
        {
            var fileLogWriter = new FileLogWriter((dir, file) => null);

            fileLogWriter.Log(LogLevel.Error, null);
        }
Exemplo n.º 9
0
        public void TestRotateLog()
        {
            var tmpFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.CommonApplicationData)
                            + @"\" + Guid.NewGuid().ToString();

            Console.WriteLine(tmpFolder);
            Directory.CreateDirectory(tmpFolder);
            var conf = new MonitorConfiguration()
            {
                LogLevel        = "Info",
                LogFilePath     = tmpFolder + @"\test.log",
                LogFileSize     = 1,
                MaxLogRetention = 2
            };

            var logWriter = new FileLogWriter(conf);

            String[] logContent = new String[4]
            {
                "Test 0", "Test 1", "Test 2", "Test 3",
            };

            //echo "Test 0" > test.log
            logWriter.Write(LogLevel.Info, logContent[0]);
            //mv test.log test.log.0
            //echo "Test 1" > test.log
            logWriter.Write(LogLevel.Info, logContent[1]);

            Assert.IsTrue(File.Exists(conf.LogFilePath));
            String log = File.ReadAllText(conf.LogFilePath);

            Assert.IsTrue(log.Contains(logContent[1]));

            Assert.IsTrue(File.Exists(conf.LogFilePath + @".0"));
            log = File.ReadAllText(conf.LogFilePath + @".0");
            Assert.IsTrue(log.Contains(logContent[0]));

            //mv test.log.0  test.log.1
            //mv test.log test.log.0
            //echo "Test 2" > test.log
            logWriter.Write(LogLevel.Info, logContent[2]);

            //rm test.log.1
            //mv test.log.0 test.log.1
            //mv test.log test.log.0
            //echo "Test 3" test.log
            logWriter.Write(LogLevel.Info, logContent[3]);

            Assert.IsTrue(File.Exists(conf.LogFilePath + @".0"));
            Assert.IsTrue(File.Exists(conf.LogFilePath + @".1"));
            Assert.IsFalse(File.Exists(conf.LogFilePath + @".2"));

            log = File.ReadAllText(conf.LogFilePath);
            Assert.IsTrue(log.Contains(logContent[3]));


            log = File.ReadAllText(conf.LogFilePath + @".1");
            Assert.IsTrue(log.Contains(logContent[1]));

            Directory.Delete(tmpFolder, true);
        }
Exemplo n.º 10
0
        public void WorksWithoutArchiver()
        {
            Writer = new FileLogWriter(FileInfo, Formatter.Object, null, FileService.Object, DirectoryServie.Object);

            Writer.Write(LogInfo);
        }
Exemplo n.º 11
0
        private static void Main()
        {
            try
            {
                FileLogWriter logWriter = null;

                IConfigManager config = new AppConfigConfigurator();

                bool interactiveConsole = config.GetSettingAsInt("interactive_console", 0) == 1;

                if (config.GetSettingAsInt("log_to_console", 0) == 0)
                {
                    if (config.GetSettingAsInt("overwrite_log_file", 0) == 1)
                    {
                        logWriter = new FileLogWriter(
                            Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "logs"),
                            "TrackCycle.log")
                        {
                            LogWithTimestamp = true
                        };
                    }
                    else
                    {
                        logWriter = new FileLogWriter(
                            Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "logs"),
                            DateTime.UtcNow.ToString("yyyyMMdd_HHmmss") + "_Startup.log")
                        {
                            LogWithTimestamp = true
                        };
                    }
                }

                try
                {
                    trackCycler = new TrackCyclePlugin();

                    AcServerPluginManager pluginManager = new AcServerPluginManager(logWriter, config);
                    pluginManager.LoadInfoFromServerConfig();
                    pluginManager.AddPlugin(trackCycler);
                    pluginManager.LoadPluginsFromAppConfig();

                    if (!MonoHelper.IsLinux)
                    {
                        // Some boilerplate to react to close window event, CTRL-C, kill, etc
                        _handler += new EventHandler(Handler);
                        SetConsoleCtrlHandler(_handler, true);
                    }

                    trackCycler.StartServer();
                    Console.Out.WriteLine("Server running...");

                    if (interactiveConsole)
                    {
                        Console.Out.WriteLine("Write 'next_track' to cycle to the next track.");
                        Console.Out.WriteLine("Write 'exit' to shut the server down.");
                    }

                    while (true)
                    {
                        if (interactiveConsole)
                        {
                            string line = Console.ReadLine();
                            if (line.ToLower() == "exit")
                            {
                                break;
                            }
                            else if (line.ToLower() == "next_track")
                            {
                                trackCycler.NextTrackAsync(true);
                            }
                            else
                            {
                                pluginManager.BroadcastChatMessage(line);
                            }
                        }
                        else
                        {
                            Thread.Sleep(500);
                        }
                    }

                    trackCycler.StopServer();
                }
                catch (Exception ex)
                {
                    if (logWriter != null)
                    {
                        logWriter.Log(ex);
                    }
                    else
                    {
                        throw;
                    }
                }
                if (logWriter != null)
                {
                    logWriter.StopLoggingToFile();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Exemplo n.º 12
0
 public void Log_silently_does_nothing_if_stream_is_null()
 {
     var fileLogWriter = new FileLogWriter((dir, file) => null);
       fileLogWriter.Log(LogLevel.Error, null);
 }