2222using System ;
2323using System . Xml ;
2424using log4net . Config ;
25- using log4net . Core ;
2625using log4net . Repository ;
27- using log4net . Repository . Hierarchy ;
2826using log4net . Tests . Appender ;
2927using 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