Skip to content

Commit 34b501c

Browse files
authored
Merge pull request #157 from apache/Feature/157-fixed-Regression-when-creating-nested-loggers-in-reverse-order
#156 fixed Regression when creating nested loggers in reverse order
2 parents 804c862 + 5f94dcc commit 34b501c

File tree

7 files changed

+326
-559
lines changed

7 files changed

+326
-559
lines changed

src/log4net.Tests/Hierarchy/HierarchyTest.cs

Lines changed: 74 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@
2222
using System;
2323
using System.Xml;
2424
using log4net.Config;
25-
using log4net.Core;
2625
using log4net.Repository;
27-
using log4net.Repository.Hierarchy;
2826
using log4net.Tests.Appender;
2927
using NUnit.Framework;
3028

@@ -39,19 +37,19 @@ public void SetRepositoryPropertiesInConfigFile()
3937
// LOG4NET-53: Allow repository properties to be set in the config file
4038
XmlDocument log4netConfig = new XmlDocument();
4139
log4netConfig.LoadXml(@"
42-
<log4net>
43-
<property>
44-
<key value=""two-plus-two"" />
45-
<value value=""4"" />
46-
</property>
47-
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
48-
<layout type=""log4net.Layout.SimpleLayout"" />
49-
</appender>
50-
<root>
51-
<level value=""ALL"" />
52-
<appender-ref ref=""StringAppender"" />
53-
</root>
54-
</log4net>");
40+
<log4net>
41+
<property>
42+
<key value=""two-plus-two"" />
43+
<value value=""4"" />
44+
</property>
45+
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
46+
<layout type=""log4net.Layout.SimpleLayout"" />
47+
</appender>
48+
<root>
49+
<level value=""ALL"" />
50+
<appender-ref ref=""StringAppender"" />
51+
</root>
52+
</log4net>");
5553

5654
ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
5755
XmlConfigurator.Configure(rep, log4netConfig["log4net"]!);
@@ -101,18 +99,18 @@ public void LoggerNameCanConsistOfASingleDot()
10199
{
102100
XmlDocument log4netConfig = new XmlDocument();
103101
log4netConfig.LoadXml(@"
104-
<log4net>
105-
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
106-
<layout type=""log4net.Layout.SimpleLayout"" />
107-
</appender>
108-
<root>
109-
<level value=""ALL"" />
110-
<appender-ref ref=""StringAppender"" />
111-
</root>
112-
<logger name=""."">
113-
<level value=""WARN"" />
114-
</logger>
115-
</log4net>");
102+
<log4net>
103+
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
104+
<layout type=""log4net.Layout.SimpleLayout"" />
105+
</appender>
106+
<root>
107+
<level value=""ALL"" />
108+
<appender-ref ref=""StringAppender"" />
109+
</root>
110+
<logger name=""."">
111+
<level value=""WARN"" />
112+
</logger>
113+
</log4net>");
116114

117115
ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
118116
XmlConfigurator.Configure(rep, log4netConfig["log4net"]!);
@@ -123,18 +121,18 @@ public void LoggerNameCanConsistOfASingleNonDot()
123121
{
124122
XmlDocument log4netConfig = new XmlDocument();
125123
log4netConfig.LoadXml(@"
126-
<log4net>
127-
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
128-
<layout type=""log4net.Layout.SimpleLayout"" />
129-
</appender>
130-
<root>
131-
<level value=""ALL"" />
132-
<appender-ref ref=""StringAppender"" />
133-
</root>
134-
<logger name=""L"">
135-
<level value=""WARN"" />
136-
</logger>
137-
</log4net>");
124+
<log4net>
125+
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
126+
<layout type=""log4net.Layout.SimpleLayout"" />
127+
</appender>
128+
<root>
129+
<level value=""ALL"" />
130+
<appender-ref ref=""StringAppender"" />
131+
</root>
132+
<logger name=""L"">
133+
<level value=""WARN"" />
134+
</logger>
135+
</log4net>");
138136

139137
ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
140138
XmlConfigurator.Configure(rep, log4netConfig["log4net"]!);
@@ -145,21 +143,46 @@ public void LoggerNameCanContainSequenceOfDots()
145143
{
146144
XmlDocument log4netConfig = new XmlDocument();
147145
log4netConfig.LoadXml(@"
148-
<log4net>
149-
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
150-
<layout type=""log4net.Layout.SimpleLayout"" />
151-
</appender>
152-
<root>
153-
<level value=""ALL"" />
154-
<appender-ref ref=""StringAppender"" />
155-
</root>
156-
<logger name=""L..M"">
157-
<level value=""WARN"" />
158-
</logger>
159-
</log4net>");
146+
<log4net>
147+
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
148+
<layout type=""log4net.Layout.SimpleLayout"" />
149+
</appender>
150+
<root>
151+
<level value=""ALL"" />
152+
<appender-ref ref=""StringAppender"" />
153+
</root>
154+
<logger name=""L..M"">
155+
<level value=""WARN"" />
156+
</logger>
157+
</log4net>");
160158

161159
ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
162160
XmlConfigurator.Configure(rep, log4netConfig["log4net"]!);
163161
}
162+
163+
/// <summary>
164+
/// https://github.com/apache/logging-log4net/issues/156
165+
/// Regression: Creating nested loggers in reverse order fails in 3.0.0-preview.1
166+
/// </summary>
167+
[Test]
168+
public void CreateNestedLoggersInReverseOrder()
169+
{
170+
XmlDocument log4netConfig = new XmlDocument();
171+
log4netConfig.LoadXml(@"
172+
<log4net>
173+
<appender name=""StringAppender"" type=""log4net.Tests.Appender.StringAppender, log4net.Tests"">
174+
<layout type=""log4net.Layout.SimpleLayout"" />
175+
</appender>
176+
<root>
177+
<level value=""ALL"" />
178+
<appender-ref ref=""StringAppender"" />
179+
</root>
180+
</log4net>");
181+
182+
ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
183+
XmlConfigurator.Configure(rep, log4netConfig["log4net"]!);
184+
Assert.AreEqual("A.B.C", rep.GetLogger("A.B.C").Name);
185+
Assert.AreEqual("A.B", rep.GetLogger("A.B").Name);
186+
}
164187
}
165188
}

0 commit comments

Comments
 (0)