1 #region Copyright & License 2 // 3 // Copyright 2006 The Apache Software Foundation 4 // 5 // Licensed under the Apache License, Version 2.0 (the "License"); 6 // you may not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 // 17 #endregion 18 19 using System; 20 using System.IO; 21 22 using log4net.Config; 23 using log4net.Layout; 24 using log4net.Core; 25 using log4net.Repository; 26 using log4net.Tests.Appender; 27 using log4net.Util; 28 using NUnit.Framework; 29 30 namespace log4net.Tests.Core 31 { 32 /// <summary> 33 /// Used for internal unit testing the <see cref="PatternLayoutTest"/> class. 34 /// </summary> 35 /// <remarks> 36 /// Used for internal unit testing the <see cref="PatternLayoutTest"/> class. 37 /// </remarks> 38 [TestFixture] public class StringFormatTest 39 { TestFormatString()40 [Test] public void TestFormatString() 41 { 42 StringAppender stringAppender = new StringAppender(); 43 stringAppender.Layout = new PatternLayout("%message"); 44 45 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 46 BasicConfigurator.Configure(rep, stringAppender); 47 48 ILog log1 = LogManager.GetLogger(rep.Name, "TestFormatString"); 49 50 // *** 51 log1.Info("TestMessage"); 52 Assert.AreEqual("TestMessage", stringAppender.GetString(), "Test simple INFO event"); 53 stringAppender.Reset(); 54 55 56 // *** 57 log1.DebugFormat("Before {0} After", "Middle"); 58 Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted DEBUG event"); 59 stringAppender.Reset(); 60 61 // *** 62 log1.InfoFormat("Before {0} After", "Middle"); 63 Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted INFO event"); 64 stringAppender.Reset(); 65 66 // *** 67 log1.WarnFormat("Before {0} After", "Middle"); 68 Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted WARN event"); 69 stringAppender.Reset(); 70 71 // *** 72 log1.ErrorFormat("Before {0} After", "Middle"); 73 Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted ERROR event"); 74 stringAppender.Reset(); 75 76 // *** 77 log1.FatalFormat("Before {0} After", "Middle"); 78 Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted FATAL event"); 79 stringAppender.Reset(); 80 81 82 // *** 83 log1.InfoFormat("Before {0} After {1}", "Middle", "End"); 84 Assert.AreEqual("Before Middle After End", stringAppender.GetString(), "Test simple formatted INFO event 2"); 85 stringAppender.Reset(); 86 87 // *** 88 log1.InfoFormat("IGNORE THIS WARNING - EXCEPTION EXPECTED Before {0} After {1} {2}", "Middle", "End"); 89 Assert.AreEqual(STRING_FORMAT_ERROR, stringAppender.GetString(), "Test formatting error"); 90 stringAppender.Reset(); 91 } 92 93 private const string STRING_FORMAT_ERROR = "<log4net.Error>Exception during StringFormat: Index (zero based) must be greater than or equal to zero and less than the size of the argument list. <format>IGNORE THIS WARNING - EXCEPTION EXPECTED Before {0} After {1} {2}</format><args>{Middle, End}</args></log4net.Error>"; 94 95 TestLogFormatApi_Debug()96 [Test] public void TestLogFormatApi_Debug() 97 { 98 StringAppender stringAppender = new StringAppender(); 99 stringAppender.Layout = new PatternLayout("%level:%message"); 100 101 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 102 BasicConfigurator.Configure(rep, stringAppender); 103 104 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Debug"); 105 106 // *** 107 log1.Debug("TestMessage"); 108 Assert.AreEqual("DEBUG:TestMessage", stringAppender.GetString(), "Test simple DEBUG event 1"); 109 stringAppender.Reset(); 110 111 // *** 112 log1.Debug("TestMessage", null); 113 Assert.AreEqual("DEBUG:TestMessage", stringAppender.GetString(), "Test simple DEBUG event 2"); 114 stringAppender.Reset(); 115 116 // *** 117 log1.Debug("TestMessage", new Exception("Exception message")); 118 Assert.AreEqual("DEBUG:TestMessageSystem.Exception: Exception message\r\n", stringAppender.GetString(), "Test simple DEBUG event 3"); 119 stringAppender.Reset(); 120 121 // *** 122 log1.DebugFormat("a{0}", "1"); 123 Assert.AreEqual("DEBUG:a1", stringAppender.GetString(), "Test formatted DEBUG event with 1 parm"); 124 stringAppender.Reset(); 125 126 // *** 127 log1.DebugFormat("a{0}b{1}", "1", "2"); 128 Assert.AreEqual("DEBUG:a1b2", stringAppender.GetString(), "Test formatted DEBUG event with 2 parm"); 129 stringAppender.Reset(); 130 131 // *** 132 log1.DebugFormat("a{0}b{1}c{2}", "1", "2", "3"); 133 Assert.AreEqual("DEBUG:a1b2c3", stringAppender.GetString(), "Test formatted DEBUG event with 3 parm"); 134 stringAppender.Reset(); 135 136 137 // *** 138 log1.DebugFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 139 Assert.AreEqual("DEBUG:aQbWcEdReTf", stringAppender.GetString(), "Test formatted DEBUG event with 5 parms (only 4 used)"); 140 stringAppender.Reset(); 141 142 // *** 143 log1.DebugFormat(null, "Before {0} After {1}", "Middle", "End"); 144 Assert.AreEqual("DEBUG:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); 145 stringAppender.Reset(); 146 147 // *** 148 log1.DebugFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 149 Assert.AreEqual("DEBUG:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); 150 stringAppender.Reset(); 151 } TestLogFormatApi_NoDebug()152 [Test] public void TestLogFormatApi_NoDebug() 153 { 154 StringAppender stringAppender = new StringAppender(); 155 stringAppender.Threshold = Level.Info; 156 stringAppender.Layout = new PatternLayout("%level:%message"); 157 158 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 159 BasicConfigurator.Configure(rep, stringAppender); 160 161 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Debug"); 162 163 // *** 164 log1.Debug("TestMessage"); 165 Assert.AreEqual("", stringAppender.GetString(), "Test simple DEBUG event 1"); 166 stringAppender.Reset(); 167 168 // *** 169 log1.Debug("TestMessage", null); 170 Assert.AreEqual("", stringAppender.GetString(), "Test simple DEBUG event 2"); 171 stringAppender.Reset(); 172 173 // *** 174 log1.Debug("TestMessage", new Exception("Exception message")); 175 Assert.AreEqual("", stringAppender.GetString(), "Test simple DEBUG event 3"); 176 stringAppender.Reset(); 177 178 // *** 179 log1.DebugFormat("a{0}", "1"); 180 Assert.AreEqual("", stringAppender.GetString(), "Test formatted DEBUG event with 1 parm"); 181 stringAppender.Reset(); 182 183 // *** 184 log1.DebugFormat("a{0}b{1}", "1", "2"); 185 Assert.AreEqual("", stringAppender.GetString(), "Test formatted DEBUG event with 2 parm"); 186 stringAppender.Reset(); 187 188 // *** 189 log1.DebugFormat("a{0}b{1}c{2}", "1", "2", "3"); 190 Assert.AreEqual("", stringAppender.GetString(), "Test formatted DEBUG event with 3 parm"); 191 stringAppender.Reset(); 192 193 194 // *** 195 log1.DebugFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 196 Assert.AreEqual("", stringAppender.GetString(), "Test formatted DEBUG event with 5 parms (only 4 used)"); 197 stringAppender.Reset(); 198 199 // *** 200 log1.DebugFormat(null, "Before {0} After {1}", "Middle", "End"); 201 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); 202 stringAppender.Reset(); 203 204 // *** 205 log1.DebugFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 206 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); 207 stringAppender.Reset(); 208 } 209 210 TestLogFormatApi_Info()211 [Test] public void TestLogFormatApi_Info() 212 { 213 StringAppender stringAppender = new StringAppender(); 214 stringAppender.Layout = new PatternLayout("%level:%message"); 215 216 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 217 BasicConfigurator.Configure(rep, stringAppender); 218 219 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Info"); 220 221 // *** 222 log1.Info("TestMessage"); 223 Assert.AreEqual("INFO:TestMessage", stringAppender.GetString(), "Test simple INFO event 1"); 224 stringAppender.Reset(); 225 226 // *** 227 log1.Info("TestMessage", null); 228 Assert.AreEqual("INFO:TestMessage", stringAppender.GetString(), "Test simple INFO event 2"); 229 stringAppender.Reset(); 230 231 // *** 232 log1.Info("TestMessage", new Exception("Exception message")); 233 Assert.AreEqual("INFO:TestMessageSystem.Exception: Exception message\r\n", stringAppender.GetString(), "Test simple INFO event 3"); 234 stringAppender.Reset(); 235 236 // *** 237 log1.InfoFormat("a{0}", "1"); 238 Assert.AreEqual("INFO:a1", stringAppender.GetString(), "Test formatted INFO event with 1 parm"); 239 stringAppender.Reset(); 240 241 // *** 242 log1.InfoFormat("a{0}b{1}", "1", "2"); 243 Assert.AreEqual("INFO:a1b2", stringAppender.GetString(), "Test formatted INFO event with 2 parm"); 244 stringAppender.Reset(); 245 246 // *** 247 log1.InfoFormat("a{0}b{1}c{2}", "1", "2", "3"); 248 Assert.AreEqual("INFO:a1b2c3", stringAppender.GetString(), "Test formatted INFO event with 3 parm"); 249 stringAppender.Reset(); 250 251 252 // *** 253 log1.InfoFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 254 Assert.AreEqual("INFO:aQbWcEdReTf", stringAppender.GetString(), "Test formatted INFO event with 5 parms (only 4 used)"); 255 stringAppender.Reset(); 256 257 // *** 258 log1.InfoFormat(null, "Before {0} After {1}", "Middle", "End"); 259 Assert.AreEqual("INFO:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); 260 stringAppender.Reset(); 261 262 // *** 263 log1.InfoFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 264 Assert.AreEqual("INFO:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); 265 stringAppender.Reset(); 266 } TestLogFormatApi_NoInfo()267 [Test] public void TestLogFormatApi_NoInfo() 268 { 269 StringAppender stringAppender = new StringAppender(); 270 stringAppender.Threshold = Level.Warn; 271 stringAppender.Layout = new PatternLayout("%level:%message"); 272 273 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 274 BasicConfigurator.Configure(rep, stringAppender); 275 276 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Info"); 277 278 // *** 279 log1.Info("TestMessage"); 280 Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 1"); 281 stringAppender.Reset(); 282 283 // *** 284 log1.Info("TestMessage", null); 285 Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 2"); 286 stringAppender.Reset(); 287 288 // *** 289 log1.Info("TestMessage", new Exception("Exception message")); 290 Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 3"); 291 stringAppender.Reset(); 292 293 // *** 294 log1.InfoFormat("a{0}", "1"); 295 Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 1 parm"); 296 stringAppender.Reset(); 297 298 // *** 299 log1.InfoFormat("a{0}b{1}", "1", "2"); 300 Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 2 parm"); 301 stringAppender.Reset(); 302 303 // *** 304 log1.InfoFormat("a{0}b{1}c{2}", "1", "2", "3"); 305 Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 3 parm"); 306 stringAppender.Reset(); 307 308 309 // *** 310 log1.InfoFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 311 Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 5 parms (only 4 used)"); 312 stringAppender.Reset(); 313 314 // *** 315 log1.InfoFormat(null, "Before {0} After {1}", "Middle", "End"); 316 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); 317 stringAppender.Reset(); 318 319 // *** 320 log1.InfoFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 321 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); 322 stringAppender.Reset(); 323 } 324 325 TestLogFormatApi_Warn()326 [Test] public void TestLogFormatApi_Warn() 327 { 328 StringAppender stringAppender = new StringAppender(); 329 stringAppender.Layout = new PatternLayout("%level:%message"); 330 331 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 332 BasicConfigurator.Configure(rep, stringAppender); 333 334 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Warn"); 335 336 // *** 337 log1.Warn("TestMessage"); 338 Assert.AreEqual("WARN:TestMessage", stringAppender.GetString(), "Test simple WARN event 1"); 339 stringAppender.Reset(); 340 341 // *** 342 log1.Warn("TestMessage", null); 343 Assert.AreEqual("WARN:TestMessage", stringAppender.GetString(), "Test simple WARN event 2"); 344 stringAppender.Reset(); 345 346 // *** 347 log1.Warn("TestMessage", new Exception("Exception message")); 348 Assert.AreEqual("WARN:TestMessageSystem.Exception: Exception message\r\n", stringAppender.GetString(), "Test simple WARN event 3"); 349 stringAppender.Reset(); 350 351 // *** 352 log1.WarnFormat("a{0}", "1"); 353 Assert.AreEqual("WARN:a1", stringAppender.GetString(), "Test formatted WARN event with 1 parm"); 354 stringAppender.Reset(); 355 356 // *** 357 log1.WarnFormat("a{0}b{1}", "1", "2"); 358 Assert.AreEqual("WARN:a1b2", stringAppender.GetString(), "Test formatted WARN event with 2 parm"); 359 stringAppender.Reset(); 360 361 // *** 362 log1.WarnFormat("a{0}b{1}c{2}", "1", "2", "3"); 363 Assert.AreEqual("WARN:a1b2c3", stringAppender.GetString(), "Test formatted WARN event with 3 parm"); 364 stringAppender.Reset(); 365 366 367 // *** 368 log1.WarnFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 369 Assert.AreEqual("WARN:aQbWcEdReTf", stringAppender.GetString(), "Test formatted WARN event with 5 parms (only 4 used)"); 370 stringAppender.Reset(); 371 372 // *** 373 log1.WarnFormat(null, "Before {0} After {1}", "Middle", "End"); 374 Assert.AreEqual("WARN:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); 375 stringAppender.Reset(); 376 377 // *** 378 log1.WarnFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 379 Assert.AreEqual("WARN:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); 380 stringAppender.Reset(); 381 } TestLogFormatApi_NoWarn()382 [Test] public void TestLogFormatApi_NoWarn() 383 { 384 StringAppender stringAppender = new StringAppender(); 385 stringAppender.Threshold = Level.Error; 386 stringAppender.Layout = new PatternLayout("%level:%message"); 387 388 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 389 BasicConfigurator.Configure(rep, stringAppender); 390 391 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Warn"); 392 393 // *** 394 log1.Warn("TestMessage"); 395 Assert.AreEqual("", stringAppender.GetString(), "Test simple WARN event 1"); 396 stringAppender.Reset(); 397 398 // *** 399 log1.Warn("TestMessage", null); 400 Assert.AreEqual("", stringAppender.GetString(), "Test simple WARN event 2"); 401 stringAppender.Reset(); 402 403 // *** 404 log1.Warn("TestMessage", new Exception("Exception message")); 405 Assert.AreEqual("", stringAppender.GetString(), "Test simple WARN event 3"); 406 stringAppender.Reset(); 407 408 // *** 409 log1.WarnFormat("a{0}", "1"); 410 Assert.AreEqual("", stringAppender.GetString(), "Test formatted WARN event with 1 parm"); 411 stringAppender.Reset(); 412 413 // *** 414 log1.WarnFormat("a{0}b{1}", "1", "2"); 415 Assert.AreEqual("", stringAppender.GetString(), "Test formatted WARN event with 2 parm"); 416 stringAppender.Reset(); 417 418 // *** 419 log1.WarnFormat("a{0}b{1}c{2}", "1", "2", "3"); 420 Assert.AreEqual("", stringAppender.GetString(), "Test formatted WARN event with 3 parm"); 421 stringAppender.Reset(); 422 423 424 // *** 425 log1.WarnFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 426 Assert.AreEqual("", stringAppender.GetString(), "Test formatted WARN event with 5 parms (only 4 used)"); 427 stringAppender.Reset(); 428 429 // *** 430 log1.WarnFormat(null, "Before {0} After {1}", "Middle", "End"); 431 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); 432 stringAppender.Reset(); 433 434 // *** 435 log1.WarnFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 436 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); 437 stringAppender.Reset(); 438 } 439 440 TestLogFormatApi_Error()441 [Test] public void TestLogFormatApi_Error() 442 { 443 StringAppender stringAppender = new StringAppender(); 444 stringAppender.Layout = new PatternLayout("%level:%message"); 445 446 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 447 BasicConfigurator.Configure(rep, stringAppender); 448 449 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Error"); 450 451 // *** 452 log1.Error("TestMessage"); 453 Assert.AreEqual("ERROR:TestMessage", stringAppender.GetString(), "Test simple ERROR event 1"); 454 stringAppender.Reset(); 455 456 // *** 457 log1.Error("TestMessage", null); 458 Assert.AreEqual("ERROR:TestMessage", stringAppender.GetString(), "Test simple ERROR event 2"); 459 stringAppender.Reset(); 460 461 // *** 462 log1.Error("TestMessage", new Exception("Exception message")); 463 Assert.AreEqual("ERROR:TestMessageSystem.Exception: Exception message\r\n", stringAppender.GetString(), "Test simple ERROR event 3"); 464 stringAppender.Reset(); 465 466 // *** 467 log1.ErrorFormat("a{0}", "1"); 468 Assert.AreEqual("ERROR:a1", stringAppender.GetString(), "Test formatted ERROR event with 1 parm"); 469 stringAppender.Reset(); 470 471 // *** 472 log1.ErrorFormat("a{0}b{1}", "1", "2"); 473 Assert.AreEqual("ERROR:a1b2", stringAppender.GetString(), "Test formatted ERROR event with 2 parm"); 474 stringAppender.Reset(); 475 476 // *** 477 log1.ErrorFormat("a{0}b{1}c{2}", "1", "2", "3"); 478 Assert.AreEqual("ERROR:a1b2c3", stringAppender.GetString(), "Test formatted ERROR event with 3 parm"); 479 stringAppender.Reset(); 480 481 482 // *** 483 log1.ErrorFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 484 Assert.AreEqual("ERROR:aQbWcEdReTf", stringAppender.GetString(), "Test formatted ERROR event with 5 parms (only 4 used)"); 485 stringAppender.Reset(); 486 487 // *** 488 log1.ErrorFormat(null, "Before {0} After {1}", "Middle", "End"); 489 Assert.AreEqual("ERROR:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); 490 stringAppender.Reset(); 491 492 // *** 493 log1.ErrorFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 494 Assert.AreEqual("ERROR:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); 495 stringAppender.Reset(); 496 } TestLogFormatApi_NoError()497 [Test] public void TestLogFormatApi_NoError() 498 { 499 StringAppender stringAppender = new StringAppender(); 500 stringAppender.Threshold = Level.Fatal; 501 stringAppender.Layout = new PatternLayout("%level:%message"); 502 503 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 504 BasicConfigurator.Configure(rep, stringAppender); 505 506 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Error"); 507 508 // *** 509 log1.Error("TestMessage"); 510 Assert.AreEqual("", stringAppender.GetString(), "Test simple ERROR event 1"); 511 stringAppender.Reset(); 512 513 // *** 514 log1.Error("TestMessage", null); 515 Assert.AreEqual("", stringAppender.GetString(), "Test simple ERROR event 2"); 516 stringAppender.Reset(); 517 518 // *** 519 log1.Error("TestMessage", new Exception("Exception message")); 520 Assert.AreEqual("", stringAppender.GetString(), "Test simple ERROR event 3"); 521 stringAppender.Reset(); 522 523 // *** 524 log1.ErrorFormat("a{0}", "1"); 525 Assert.AreEqual("", stringAppender.GetString(), "Test formatted ERROR event with 1 parm"); 526 stringAppender.Reset(); 527 528 // *** 529 log1.ErrorFormat("a{0}b{1}", "1", "2"); 530 Assert.AreEqual("", stringAppender.GetString(), "Test formatted ERROR event with 2 parm"); 531 stringAppender.Reset(); 532 533 // *** 534 log1.ErrorFormat("a{0}b{1}c{2}", "1", "2", "3"); 535 Assert.AreEqual("", stringAppender.GetString(), "Test formatted ERROR event with 3 parm"); 536 stringAppender.Reset(); 537 538 539 // *** 540 log1.ErrorFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 541 Assert.AreEqual("", stringAppender.GetString(), "Test formatted ERROR event with 5 parms (only 4 used)"); 542 stringAppender.Reset(); 543 544 // *** 545 log1.ErrorFormat(null, "Before {0} After {1}", "Middle", "End"); 546 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); 547 stringAppender.Reset(); 548 549 // *** 550 log1.ErrorFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 551 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); 552 stringAppender.Reset(); 553 } 554 555 TestLogFormatApi_Fatal()556 [Test] public void TestLogFormatApi_Fatal() 557 { 558 StringAppender stringAppender = new StringAppender(); 559 stringAppender.Layout = new PatternLayout("%level:%message"); 560 561 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 562 BasicConfigurator.Configure(rep, stringAppender); 563 564 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Fatal"); 565 566 // *** 567 log1.Fatal("TestMessage"); 568 Assert.AreEqual("FATAL:TestMessage", stringAppender.GetString(), "Test simple FATAL event 1"); 569 stringAppender.Reset(); 570 571 // *** 572 log1.Fatal("TestMessage", null); 573 Assert.AreEqual("FATAL:TestMessage", stringAppender.GetString(), "Test simple FATAL event 2"); 574 stringAppender.Reset(); 575 576 // *** 577 log1.Fatal("TestMessage", new Exception("Exception message")); 578 Assert.AreEqual("FATAL:TestMessageSystem.Exception: Exception message\r\n", stringAppender.GetString(), "Test simple FATAL event 3"); 579 stringAppender.Reset(); 580 581 // *** 582 log1.FatalFormat("a{0}", "1"); 583 Assert.AreEqual("FATAL:a1", stringAppender.GetString(), "Test formatted FATAL event with 1 parm"); 584 stringAppender.Reset(); 585 586 // *** 587 log1.FatalFormat("a{0}b{1}", "1", "2"); 588 Assert.AreEqual("FATAL:a1b2", stringAppender.GetString(), "Test formatted FATAL event with 2 parm"); 589 stringAppender.Reset(); 590 591 // *** 592 log1.FatalFormat("a{0}b{1}c{2}", "1", "2", "3"); 593 Assert.AreEqual("FATAL:a1b2c3", stringAppender.GetString(), "Test formatted FATAL event with 3 parm"); 594 stringAppender.Reset(); 595 596 597 // *** 598 log1.FatalFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 599 Assert.AreEqual("FATAL:aQbWcEdReTf", stringAppender.GetString(), "Test formatted FATAL event with 5 parms (only 4 used)"); 600 stringAppender.Reset(); 601 602 // *** 603 log1.FatalFormat(null, "Before {0} After {1}", "Middle", "End"); 604 Assert.AreEqual("FATAL:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); 605 stringAppender.Reset(); 606 607 // *** 608 log1.FatalFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 609 Assert.AreEqual("FATAL:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); 610 stringAppender.Reset(); 611 } TestLogFormatApi_NoFatal()612 [Test] public void TestLogFormatApi_NoFatal() 613 { 614 StringAppender stringAppender = new StringAppender(); 615 stringAppender.Threshold = Level.Off; 616 stringAppender.Layout = new PatternLayout("%level:%message"); 617 618 ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); 619 BasicConfigurator.Configure(rep, stringAppender); 620 621 ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Fatal"); 622 623 // *** 624 log1.Fatal("TestMessage"); 625 Assert.AreEqual("", stringAppender.GetString(), "Test simple FATAL event 1"); 626 stringAppender.Reset(); 627 628 // *** 629 log1.Fatal("TestMessage", null); 630 Assert.AreEqual("", stringAppender.GetString(), "Test simple FATAL event 2"); 631 stringAppender.Reset(); 632 633 // *** 634 log1.Fatal("TestMessage", new Exception("Exception message")); 635 Assert.AreEqual("", stringAppender.GetString(), "Test simple FATAL event 3"); 636 stringAppender.Reset(); 637 638 // *** 639 log1.FatalFormat("a{0}", "1"); 640 Assert.AreEqual("", stringAppender.GetString(), "Test formatted FATAL event with 1 parm"); 641 stringAppender.Reset(); 642 643 // *** 644 log1.FatalFormat("a{0}b{1}", "1", "2"); 645 Assert.AreEqual("", stringAppender.GetString(), "Test formatted FATAL event with 2 parm"); 646 stringAppender.Reset(); 647 648 // *** 649 log1.FatalFormat("a{0}b{1}c{2}", "1", "2", "3"); 650 Assert.AreEqual("", stringAppender.GetString(), "Test formatted FATAL event with 3 parm"); 651 stringAppender.Reset(); 652 653 654 // *** 655 log1.FatalFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); 656 Assert.AreEqual("", stringAppender.GetString(), "Test formatted FATAL event with 5 parms (only 4 used)"); 657 stringAppender.Reset(); 658 659 // *** 660 log1.FatalFormat(null, "Before {0} After {1}", "Middle", "End"); 661 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); 662 stringAppender.Reset(); 663 664 // *** 665 log1.FatalFormat(new System.Globalization.CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); 666 Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); 667 stringAppender.Reset(); 668 } 669 } 670 } 671