|
32 | 32 | #include <log4cxx/helpers/stringhelper.h>
|
33 | 33 | #include <log4cxx/spi/location/locationinfo.h>
|
34 | 34 | #include <log4cxx/xml/domconfigurator.h>
|
| 35 | +#include <log4cxx/propertyconfigurator.h> |
35 | 36 | #include <log4cxx/file.h>
|
36 | 37 | #include <thread>
|
37 | 38 |
|
@@ -138,8 +139,10 @@ class AsyncAppenderTestCase : public AppenderSkeletonTestCase
|
138 | 139 | LOGUNIT_TEST(testBufferOverflowBehavior);
|
139 | 140 | LOGUNIT_TEST(testLoggingAppender);
|
140 | 141 | #if LOG4CXX_HAS_DOMCONFIGURATOR
|
141 |
| - LOGUNIT_TEST(testConfiguration); |
| 142 | + LOGUNIT_TEST(testXMLConfiguration); |
| 143 | + LOGUNIT_TEST(testAsyncLoggerXML); |
142 | 144 | #endif
|
| 145 | + LOGUNIT_TEST(testAsyncLoggerProperties); |
143 | 146 | LOGUNIT_TEST_SUITE_END();
|
144 | 147 |
|
145 | 148 | #ifdef _DEBUG
|
@@ -531,7 +534,7 @@ class AsyncAppenderTestCase : public AppenderSkeletonTestCase
|
531 | 534 | }
|
532 | 535 |
|
533 | 536 | #if LOG4CXX_HAS_DOMCONFIGURATOR
|
534 |
| - void testConfiguration() |
| 537 | + void testXMLConfiguration() |
535 | 538 | {
|
536 | 539 | // Configure Log4cxx
|
537 | 540 | auto status = xml::DOMConfigurator::configure("input/xml/asyncAppender1.xml");
|
@@ -562,8 +565,66 @@ class AsyncAppenderTestCase : public AppenderSkeletonTestCase
|
562 | 565 | LOGUNIT_ASSERT_EQUAL(LEN, v.size());
|
563 | 566 | LOGUNIT_ASSERT(vectorAppender->isClosed());
|
564 | 567 | }
|
| 568 | + |
| 569 | + void testAsyncLoggerXML() |
| 570 | + { |
| 571 | + // Configure Log4cxx |
| 572 | + auto status = xml::DOMConfigurator::configure("input/xml/asyncLogger.xml"); |
| 573 | + LOGUNIT_ASSERT_EQUAL(status, spi::ConfigurationStatus::Configured); |
| 574 | + |
| 575 | + // Check configuration is as expected |
| 576 | + auto root = Logger::getRootLogger(); |
| 577 | + auto appenders = root->getAllAppenders(); |
| 578 | + LOGUNIT_ASSERT_EQUAL(1, int(appenders.size())); |
| 579 | + auto asyncAppender = log4cxx::cast<AsyncAppender>(appenders.front()); |
| 580 | + LOGUNIT_ASSERT(asyncAppender); |
| 581 | + |
| 582 | + // Log some messages |
| 583 | + size_t LEN = 20; |
| 584 | + for (size_t i = 0; i < LEN; i++) |
| 585 | + { |
| 586 | + LOG4CXX_INFO_ASYNC(root, "message" << i); |
| 587 | + } |
| 588 | + asyncAppender->close(); |
| 589 | + |
| 590 | + // Check all message were received |
| 591 | + auto vectorAppender = log4cxx::cast<VectorAppender>(asyncAppender->getAppender(LOG4CXX_STR("VECTOR"))); |
| 592 | + LOGUNIT_ASSERT(vectorAppender); |
| 593 | + auto& v = vectorAppender->getVector(); |
| 594 | + LOGUNIT_ASSERT_EQUAL(LEN, v.size()); |
| 595 | + LOGUNIT_ASSERT(vectorAppender->isClosed()); |
| 596 | + } |
565 | 597 | #endif
|
566 | 598 |
|
| 599 | + void testAsyncLoggerProperties() |
| 600 | + { |
| 601 | + // Configure Log4cxx |
| 602 | + auto status = PropertyConfigurator::configure("input/asyncLogger.properties"); |
| 603 | + LOGUNIT_ASSERT_EQUAL(status, spi::ConfigurationStatus::Configured); |
| 604 | + |
| 605 | + // Check configuration is as expected |
| 606 | + auto root = Logger::getRootLogger(); |
| 607 | + auto appenders = root->getAllAppenders(); |
| 608 | + LOGUNIT_ASSERT_EQUAL(1, int(appenders.size())); |
| 609 | + auto asyncAppender = log4cxx::cast<AsyncAppender>(appenders.front()); |
| 610 | + LOGUNIT_ASSERT(asyncAppender); |
| 611 | + |
| 612 | + // Log some messages |
| 613 | + size_t LEN = 20; |
| 614 | + for (size_t i = 0; i < LEN; i++) |
| 615 | + { |
| 616 | + LOG4CXX_INFO_ASYNC(root, "message" << i); |
| 617 | + } |
| 618 | + asyncAppender->close(); |
| 619 | + |
| 620 | + // Check all message were received |
| 621 | + auto vectorAppender = log4cxx::cast<VectorAppender>(asyncAppender->getAppender(LOG4CXX_STR("VECTOR"))); |
| 622 | + LOGUNIT_ASSERT(vectorAppender); |
| 623 | + auto& v = vectorAppender->getVector(); |
| 624 | + LOGUNIT_ASSERT_EQUAL(LEN, v.size()); |
| 625 | + LOGUNIT_ASSERT(vectorAppender->isClosed()); |
| 626 | + } |
| 627 | + |
567 | 628 |
|
568 | 629 | };
|
569 | 630 |
|
|
0 commit comments