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 2008/01/13 19:45:32 UTC
svn commit: r611623 - in /logging/log4net/trunk/tests/src:
Hierarchy/Hierarchy.cs Util/PatternConverterTest.cs
log4net.Tests.vs2005.csproj
Author: rgrabowski
Date: Sun Jan 13 10:45:31 2008
New Revision: 611623
URL: http://svn.apache.org/viewvc?rev=611623&view=rev
Log:
Added test for LOG4NET-53 (allow repository properties to be set in xml config file). Added test case for LOG4NET-31 (allow additional properties to be set on converters).
Added:
logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs
logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs
Modified:
logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj
Added: logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs?rev=611623&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs (added)
+++ logging/log4net/trunk/tests/src/Hierarchy/Hierarchy.cs Sun Jan 13 10:45:31 2008
@@ -0,0 +1,39 @@
+using System;
+using System.Xml;
+using log4net.Config;
+using log4net.Repository;
+using NUnit.Framework;
+
+namespace log4net.Tests.Hierarchy
+{
+ [TestFixture]
+ public class Hierarchy
+ {
+ [Test]
+ public void SetRepositoryPropertiesInConfigFile()
+ {
+ // LOG4NET-53: Allow repository properties to be set in the config file
+ XmlDocument log4netConfig = new XmlDocument();
+ log4netConfig.LoadXml(@"
+ <log4net>
+ <property>
+ <key value=""two-plus-two"" />
+ <value value=""4"" />
+ </property>
+ <appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
+ <layout type=""log4net.Layout.SimpleLayout"" />
+ </appender>
+ <root>
+ <level value=""ALL"" />
+ <appender-ref ref=""StringAppender"" />
+ </root>
+ </log4net>");
+
+ ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+ XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+
+ Assert.AreEqual("4", rep.Properties["two-plus-two"]);
+ Assert.IsNull(rep.Properties["one-plus-one"]);
+ }
+ }
+}
Added: logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs?rev=611623&view=auto
==============================================================================
--- logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs (added)
+++ logging/log4net/trunk/tests/src/Util/PatternConverterTest.cs Sun Jan 13 10:45:31 2008
@@ -0,0 +1,171 @@
+using System;
+using System.IO;
+using System.Xml;
+using log4net.Config;
+using log4net.Core;
+using log4net.Layout.Pattern;
+using log4net.Repository;
+using log4net.Tests.Appender;
+using log4net.Util;
+using NUnit.Framework;
+
+namespace log4net.Tests.Util
+{
+ [TestFixture]
+ public class PatternConverterTest
+ {
+ [Test]
+ public void PatternLayoutConverterProperties()
+ {
+ XmlDocument log4netConfig = new XmlDocument();
+ log4netConfig.LoadXml(@"
+ <log4net>
+ <appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
+ <layout type=""log4net.Layout.PatternLayout"">
+ <converter>
+ <name value=""propertyKeyCount"" />
+ <type value=""log4net.Tests.Util.PropertyKeyCountPatternLayoutConverter, log4net.Tests"" />
+ <property>
+ <key value=""one-plus-one"" />
+ <value value=""2"" />
+ </property>
+ <property>
+ <key value=""two-plus-two"" />
+ <value value=""4"" />
+ </property>
+ </converter>
+ <conversionPattern value=""%propertyKeyCount"" />
+ </layout>
+ </appender>
+ <root>
+ <level value=""ALL"" />
+ <appender-ref ref=""StringAppender"" />
+ </root>
+ </log4net>");
+
+ ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+ XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+
+ ILog log = LogManager.GetLogger(rep.Name, "PatternLayoutConverterProperties");
+ log.Debug("Message");
+
+ PropertyKeyCountPatternLayoutConverter converter =
+ PropertyKeyCountPatternLayoutConverter.MostRecentInstance;
+ Assert.AreEqual(2, converter.Properties.Count);
+ Assert.AreEqual("4", converter.Properties["two-plus-two"]);
+
+ StringAppender appender =
+ (StringAppender)LogManager.GetRepository(rep.Name).GetAppenders()[0];
+ Assert.AreEqual("2", appender.GetString());
+ }
+
+ [Test]
+ public void PatternConverterProperties()
+ {
+ XmlDocument log4netConfig = new XmlDocument();
+ log4netConfig.LoadXml(@"
+ <log4net>
+ <appender name=""PatternStringAppender"" type=""log4net.Tests.Util.PatternStringAppender, log4net.Tests"">
+ <layout type=""log4net.Layout.SimpleLayout"" />
+ <setting>
+ <converter>
+ <name value=""propertyKeyCount"" />
+ <type value=""log4net.Tests.Util.PropertyKeyCountPatternConverter, log4net.Tests"" />
+ <property>
+ <key value=""one-plus-one"" />
+ <value value=""2"" />
+ </property>
+ <property>
+ <key value=""two-plus-two"" />
+ <value value=""4"" />
+ </property>
+ </converter>
+ <conversionPattern value=""%propertyKeyCount"" />
+ </setting>
+ </appender>
+ <root>
+ <level value=""ALL"" />
+ <appender-ref ref=""PatternStringAppender"" />
+ </root>
+ </log4net>");
+
+ ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
+ XmlConfigurator.Configure(rep, log4netConfig["log4net"]);
+
+ ILog log = LogManager.GetLogger(rep.Name, "PatternConverterProperties");
+ log.Debug("Message");
+
+ PropertyKeyCountPatternConverter converter =
+ PropertyKeyCountPatternConverter.MostRecentInstance;
+ Assert.AreEqual(2, converter.Properties.Count);
+ Assert.AreEqual("4", converter.Properties["two-plus-two"]);
+
+ PatternStringAppender appender =
+ (PatternStringAppender)LogManager.GetRepository(rep.Name).GetAppenders()[0];
+ Assert.AreEqual("2", appender.Setting.Format());
+ }
+ }
+
+ public class PropertyKeyCountPatternLayoutConverter : PatternLayoutConverter
+ {
+ private static PropertyKeyCountPatternLayoutConverter mostRecentInstance;
+
+ public PropertyKeyCountPatternLayoutConverter()
+ {
+ mostRecentInstance = this;
+ }
+
+ protected override void Convert(TextWriter writer, LoggingEvent loggingEvent)
+ {
+ writer.Write(Properties.GetKeys().Length);
+ }
+
+ public static PropertyKeyCountPatternLayoutConverter MostRecentInstance
+ {
+ get { return mostRecentInstance; }
+ }
+ }
+
+ public class PropertyKeyCountPatternConverter : PatternConverter
+ {
+ private static PropertyKeyCountPatternConverter mostRecentInstance;
+
+ public PropertyKeyCountPatternConverter()
+ {
+ mostRecentInstance = this;
+ }
+
+ protected override void Convert(TextWriter writer, object state)
+ {
+ writer.Write(Properties.GetKeys().Length);
+ }
+
+ public static PropertyKeyCountPatternConverter MostRecentInstance
+ {
+ get { return mostRecentInstance; }
+ }
+ }
+
+ public class PatternStringAppender : StringAppender
+ {
+ private static PatternStringAppender mostRecentInstace;
+
+ private PatternString setting;
+
+ public PatternStringAppender()
+ {
+ mostRecentInstace = this;
+ }
+
+ public PatternString Setting
+ {
+ get { return setting; }
+ set { setting = value; }
+ }
+
+ public static PatternStringAppender MostRecentInstace
+ {
+ get { return mostRecentInstace; }
+ }
+ }
+}
Modified: logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj
URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj?rev=611623&r1=611622&r2=611623&view=diff
==============================================================================
--- logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj (original)
+++ logging/log4net/trunk/tests/src/log4net.Tests.vs2005.csproj Sun Jan 13 10:45:31 2008
@@ -133,6 +133,7 @@
<Compile Include="Core\StringFormatTest.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="Hierarchy\Hierarchy.cs" />
<Compile Include="Hierarchy\Logger.cs">
<SubType>Code</SubType>
</Compile>
@@ -151,6 +152,7 @@
</Compile>
<Compile Include="Util\EnvironmentPatternConverterTest.cs" />
<Compile Include="Util\LogLogTest.cs" />
+ <Compile Include="Util\PatternConverterTest.cs" />
<Compile Include="Util\PatternStringTest.cs" />
<Compile Include="Util\PropertiesDictionaryTest.cs">
<SubType>Code</SubType>