public void TestWCFCreation()
        {
            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            WCFAppender_log4net.WCFAppender appender = new WCFAppender_log4net.WCFAppender();
            appender.URL = "http://localhost:8080/logging/testservice.svc";
            appender.ActivateOptions();

            Assert.IsNotNull(appender.LoggingChannel);
            Assert.IsInstanceOfType(appender.LoggingChannel, typeof(IWCFLogger));
            Assert.IsInstanceOfType(appender.LoggingChannel, typeof(IClientChannel));
        }
        public void TestBasicRenderClientSide()
        {
            TestLogger        logger = new TestLogger();
            ILoggerRepository rep    = LogManager.CreateRepository(Guid.NewGuid().ToString());

            WCFAppender_log4net.WCFAppender appender = new WCFAppender_log4net.WCFAppender();
            appender.BufferSize     = -1;
            appender.Layout         = new SimpleLayout();
            appender.LoggingChannel = logger;
            appender.RenderOnClient = true;
            appender.ActivateOptions();

            BasicConfigurator.Configure(rep, appender);

            ILog log = LogManager.GetLogger(rep.Name, "TestBasicPush");

            log.Debug("This is the first message");
            Assert.IsNotNull(TestLogger.LastLogOutput);
            Assert.IsTrue(TestLogger.LastLogOutput.Length == 1);
            Assert.IsTrue(TestLogger.LastLogOutput[0].Trim() == "DEBUG - This is the first message");
        }
        public void TestWCFChannelWithClientRenderWithNetTCPBinding()
        {
            TestLogger logger = new TestLogger();

            using (ServiceHost host = new ServiceHost(logger, new Uri("net.tcp://localhost:8080/")))
            {
                host.AddServiceEndpoint(typeof(IWCFLogger), new NetTcpBinding(), "Logger");
                host.Open();

                Thread.Sleep(3000);
                ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

                WCFAppender_log4net.WCFAppender appender = new WCFAppender_log4net.WCFAppender();
                appender.URL            = "net.tcp://localhost:8080/logger";
                appender.BufferSize     = -1;
                appender.Layout         = new SimpleLayout();
                appender.RenderOnClient = true;
                appender.BindingType    = WCFAppender_log4net.BindingType.NETTCP;
                appender.ActivateOptions();

                Assert.IsNotNull(appender.LoggingChannel);
                Assert.IsInstanceOfType(appender.LoggingChannel, typeof(IWCFLogger));
                Assert.IsInstanceOfType(appender.LoggingChannel, typeof(IClientChannel));

                BasicConfigurator.Configure(rep, appender);
                ILog log = LogManager.GetLogger(rep.Name, "TestBasicPush");

                log.Debug("Other side of the Channel!");


                //Wait for the host to process the recieve
                Thread.Sleep(2000);

                Assert.IsNotNull(TestLogger.LastLogOutput);
                Assert.IsTrue(TestLogger.LastLogOutput.Length > 0);
                Assert.IsTrue(TestLogger.LastLogOutput[0].Trim() == "DEBUG - Other side of the Channel!");
                host.Close();
            }
        }
        public void TestWCFChannelWithServerRenderAndLogException()
        {
            TestLogger logger = new TestLogger();

            using (ServiceHost host = new ServiceHost(logger, new Uri("http://localhost:8080/")))
            {
                host.AddServiceEndpoint(typeof(IWCFLogger), new BasicHttpBinding(), "Logger");
                host.Open();

                Thread.Sleep(3000);
                ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

                WCFAppender_log4net.WCFAppender appender = new WCFAppender_log4net.WCFAppender();
                appender.URL        = "http://localhost:8080/logger";
                appender.BufferSize = -1;
                appender.ActivateOptions();

                Assert.IsNotNull(appender.LoggingChannel);
                Assert.IsInstanceOfType(appender.LoggingChannel, typeof(IWCFLogger));
                Assert.IsInstanceOfType(appender.LoggingChannel, typeof(IClientChannel));

                BasicConfigurator.Configure(rep, appender);
                ILog log = LogManager.GetLogger(rep.Name, "TestBasicPush");
                log4net.ThreadContext.Properties["Stack"] = "Push1";
                log.Error("Other side of the Channel!", new ArgumentNullException("RandomParameter"));


                //Wait for the host to process the recieve
                Thread.Sleep(2000);

                Assert.IsNotNull(TestLogger.LastLogOutput);
                Assert.IsTrue(TestLogger.LastLogOutput.Length > 0);
                Assert.IsTrue(TestLogger.LastLogOutput[0].Trim() == "SERVER - Other side of the Channel!, with Exception!");

                host.Close();
            }
        }