You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by rg...@apache.org on 2010/07/27 00:50:21 UTC

svn commit: r979481 - in /logging/log4net/trunk/tests/src: Filter/ Filter/FilterTest.cs log4net.Tests.vs2008.csproj

Author: rgrabowski
Date: Mon Jul 26 22:50:21 2010
New Revision: 979481

URL: http://svn.apache.org/viewvc?rev=979481&view=rev
Log:
Simple example showing that filter properties can be set the same way as appender properties.

Added:
    logging/log4net/trunk/tests/src/Filter/   (with props)
    logging/log4net/trunk/tests/src/Filter/FilterTest.cs
Modified:
    logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj

Propchange: logging/log4net/trunk/tests/src/Filter/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Mon Jul 26 22:50:21 2010
@@ -0,0 +1 @@
+(LOG4NET-\d+)

Propchange: logging/log4net/trunk/tests/src/Filter/
------------------------------------------------------------------------------
    bugtraq:url = http://issues.apache.org/jira/browse/%BUGID%

Added: logging/log4net/trunk/tests/src/Filter/FilterTest.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Filter/FilterTest.cs?rev=979481&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Filter/FilterTest.cs (added)
+++ logging/log4net/trunk/tests/src/Filter/FilterTest.cs Mon Jul 26 22:50:21 2010
@@ -0,0 +1,90 @@
+#if NET_2_0
+using System;
+using System.Collections.Generic;
+using System.Xml;
+using log4net.Appender;
+using log4net.Config;
+using log4net.Core;
+using log4net.Filter;
+using log4net.Repository;
+using NUnit.Framework;
+
+namespace log4net.Tests.Filter
+{
+    [TestFixture]
+    public class FilterTest
+    {
+        [Test]
+        public void FilterConfigurationTest()
+        {
+            XmlDocument log4netConfig = new XmlDocument();
+            #region Load log4netConfig
+            log4netConfig.LoadXml(@"
+            <log4net>
+            <appender name=""MemoryAppender"" type=""log4net.Appender.MemoryAppender, log4net"">
+                <filter type=""log4net.Tests.Filter.MultiplePropertyFilter, log4net.Tests"">
+                    <condition>
+                        <key value=""ABC"" />
+                        <stringToMatch value=""123"" />
+                    </condition>
+                    <condition>
+                        <key value=""DEF"" />
+                        <stringToMatch value=""456"" />
+                    </condition>
+                </filter>
+            </appender>
+            <root>
+                <level value=""ALL"" />
+                <appender-ref ref=""MemoryAppender"" />
+            </root>
+            </log4net>");
+            #endregion
+
+            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+            XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+
+            IAppender[] appenders = LogManager.GetRepository(rep.Name).GetAppenders();
+            Assert.IsTrue(appenders.Length == 1);
+
+            IAppender appender = Array.Find(appenders, a => a.Name == "MemoryAppender");
+            Assert.IsNotNull(appender);
+
+            MultiplePropertyFilter multiplePropertyFilter = 
+                ((AppenderSkeleton)appender).FilterHead as MultiplePropertyFilter;
+
+            var conditions = multiplePropertyFilter.GetConditions();
+            Assert.AreEqual(2, conditions.Length);
+            Assert.AreEqual("ABC", conditions[0].Key);
+            Assert.AreEqual("123", conditions[0].StringToMatch);
+            Assert.AreEqual("DEF", conditions[1].Key);
+            Assert.AreEqual("456", conditions[1].StringToMatch);
+        }
+    }
+
+    public class MultiplePropertyFilter : FilterSkeleton
+    {
+        private readonly List<Condition> _conditions = new List<Condition>();
+
+        public override FilterDecision Decide(LoggingEvent loggingEvent)
+        {
+            return FilterDecision.Accept;
+        }
+
+        public Condition[] GetConditions()
+        {
+            return _conditions.ToArray();
+        }
+
+        public void AddCondition(Condition condition)
+        {
+            _conditions.Add(condition);
+        }
+        
+        public class Condition
+        {
+            public string Key { get; set; }
+            public string StringToMatch { get; set; }
+        }
+    }
+}
+#endif

Modified: logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj?rev=979481&r1=979480&r2=979481&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj (original)
+++ logging/log4net/trunk/tests/src/log4net.Tests.vs2008.csproj Mon Jul 26 22:50:21 2010
@@ -149,6 +149,7 @@
       <SubType>Code</SubType>
     </Compile>
     <Compile Include="LoggerRepository\ConfigurationMessages.cs" />
+    <Compile Include="Filter\FilterTest.cs" />
     <Compile Include="Utils.cs">
       <SubType>Code</SubType>
     </Compile>