public void TracingErrorInformation()
        {
            var factory = new TraceLoggerFactory();
            var logger  = factory.Create(typeof(TraceLoggerTests), LoggerLevel.Debug);

            try
            {
                try
                {
                    var fakearg = "Thisisavalue";
                    throw new ArgumentOutOfRangeException("fakearg", fakearg, "Thisisamessage");
                }
                catch (Exception ex)
                {
                    throw new ApplicationException("Inner error is " + ex.Message, ex);
                }
            }
            catch (Exception ex)
            {
                logger.Error("Problem handled", ex);
            }

            MyListener.AssertContains("testsrule", "Castle.Core.Test.Main.TraceLoggerTests");
            MyListener.AssertContains("testsrule", "Problem handled");
            MyListener.AssertContains("testsrule", "ApplicationException");
            MyListener.AssertContains("testsrule", "Inner error is");
            MyListener.AssertContains("testsrule", "ArgumentOutOfRangeException");
            MyListener.AssertContains("testsrule", "fakearg");
            MyListener.AssertContains("testsrule", "Thisisavalue");
            MyListener.AssertContains("testsrule", "Thisisamessage");
        }
        public void FallUpToShorterSourceName()
        {
            var factory = new TraceLoggerFactory();
            var logger  = factory.Create(typeof(Configuration.Xml.XmlConfigurationDeserializer), LoggerLevel.Debug);

            logger.Info("Logging to config namespace");

            MyListener.AssertContains("configrule", "Castle.Core.Configuration.Xml.XmlConfigurationDeserializer");
            MyListener.AssertContains("configrule", "Logging to config namespace");
        }
        public void FallUpToDefaultSource()
        {
            var factory = new TraceLoggerFactory();
            var logger  = factory.Create("System.Xml.XmlDocument", LoggerLevel.Debug);

            logger.Info("Logging to non-configured namespace namespace");
            Assert.IsNotNull(logger);

            MyListener.AssertContains("defaultrule", "System.Xml.XmlDocument");
            MyListener.AssertContains("defaultrule", "Logging to non-configured namespace namespace");
        }
        public void WritingToLoggerByType()
        {
            var factory = new TraceLoggerFactory();
            var logger  = factory.Create(typeof(TraceLoggerTests), LoggerLevel.Debug);

            logger.Debug("this is a tracing message");
            Assert.IsTrue(logger is LevelFilteredLogger);
            Assert.AreEqual((logger as LevelFilteredLogger).Name, "Castle.Core.Test.Main.TraceLoggerTests");

            MyListener.AssertContains("testsrule", "Castle.Core.Test.Main.TraceLoggerTests");
            MyListener.AssertContains("testsrule", "this is a tracing message");
        }