This is an automated email from the ASF dual-hosted git repository.
mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 1ab2bfc [C++] Add C++ single file logger factory (#10712)
1ab2bfc is described below
commit 1ab2bfc0427d50afa7c43c5f8a03aa26f90a9647
Author: Yunze Xu <[email protected]>
AuthorDate: Sun May 30 02:24:18 2021 +0800
[C++] Add C++ single file logger factory (#10712)
* Add SampleFileLogger C++ example
* Expose SingleFileLoggerFactory as the public interface
* Make logger factory public
* Change logger factory's name
* Use PImpl idiom for LoggerFactory classes
---
pulsar-client-cpp/examples/CMakeLists.txt | 6 ++++
pulsar-client-cpp/examples/SampleAsyncProducer.cc | 2 +-
pulsar-client-cpp/examples/SampleConsumer.cc | 2 +-
.../examples/SampleConsumerListener.cc | 2 +-
.../{SampleProducer.cc => SampleFileLogger.cc} | 26 ++++-----------
pulsar-client-cpp/examples/SampleProducer.cc | 2 +-
pulsar-client-cpp/include/pulsar/Client.h | 2 ++
...impleLoggerFactory.h => ConsoleLoggerFactory.h} | 15 +++++----
.../{SimpleLoggerFactory.h => FileLoggerFactory.h} | 29 ++++++++++-------
pulsar-client-cpp/lib/ClientImpl.cc | 6 ++--
.../ConsoleLoggerFactory.cc} | 29 +++++------------
.../ConsoleLoggerFactoryImpl.h} | 32 +++++++------------
.../SampleProducer.cc => lib/FileLoggerFactory.cc} | 30 +++++-------------
.../FileLoggerFactoryImpl.h} | 37 +++++++++++-----------
pulsar-client-cpp/lib/LogUtils.cc | 4 +--
.../lib/{SimpleLoggerFactory.cc => SimpleLogger.h} | 12 +++----
pulsar-client-cpp/tests/CustomLoggerTest.cc | 12 +++----
17 files changed, 109 insertions(+), 139 deletions(-)
diff --git a/pulsar-client-cpp/examples/CMakeLists.txt
b/pulsar-client-cpp/examples/CMakeLists.txt
index ec4f8de..bd12464 100644
--- a/pulsar-client-cpp/examples/CMakeLists.txt
+++ b/pulsar-client-cpp/examples/CMakeLists.txt
@@ -37,6 +37,10 @@ set(SAMPLE_PRODUCER_SOURCES
SampleProducer.cc
)
+set(SAMPLE_FILE_LOGGER_SOURCES
+ SampleFileLogger.cc
+)
+
set(SAMPLE_PRODUCER_C_SOURCES
SampleProducerCApi.c
)
@@ -57,6 +61,7 @@ add_executable(SampleAsyncProducer
${SAMPLE_ASYNC_PRODUCER_SOURCES})
add_executable(SampleConsumer ${SAMPLE_CONSUMER_SOURCES})
add_executable(SampleConsumerListener ${SAMPLE_CONSUMER_LISTENER_SOURCES})
add_executable(SampleProducer ${SAMPLE_PRODUCER_SOURCES})
+add_executable(SampleFileLogger ${SAMPLE_FILE_LOGGER_SOURCES})
add_executable(SampleProducerCApi ${SAMPLE_PRODUCER_C_SOURCES})
add_executable(SampleConsumerCApi ${SAMPLE_CONSUMER_C_SOURCES})
add_executable(SampleConsumerListenerCApi
${SAMPLE_CONSUMER_LISTENER_C_SOURCES})
@@ -66,6 +71,7 @@ target_link_libraries(SampleAsyncProducer ${CLIENT_LIBS}
pulsarShared)
target_link_libraries(SampleConsumer ${CLIENT_LIBS} pulsarShared)
target_link_libraries(SampleConsumerListener ${CLIENT_LIBS} pulsarShared)
target_link_libraries(SampleProducer ${CLIENT_LIBS} pulsarShared)
+target_link_libraries(SampleFileLogger ${CLIENT_LIBS} pulsarShared)
target_link_libraries(SampleProducerCApi ${CLIENT_LIBS} pulsarShared)
target_link_libraries(SampleConsumerCApi ${CLIENT_LIBS} pulsarShared)
target_link_libraries(SampleConsumerListenerCApi ${CLIENT_LIBS}
pulsarShared)
diff --git a/pulsar-client-cpp/examples/SampleAsyncProducer.cc
b/pulsar-client-cpp/examples/SampleAsyncProducer.cc
index ccc2c0f..9701ccb 100644
--- a/pulsar-client-cpp/examples/SampleAsyncProducer.cc
+++ b/pulsar-client-cpp/examples/SampleAsyncProducer.cc
@@ -35,7 +35,7 @@ int main() {
Client client("pulsar://localhost:6650");
Producer producer;
- Result result = client.createProducer("persistent://prop/r1/ns1/my-topic",
producer);
+ Result result =
client.createProducer("persistent://public/default/my-topic", producer);
if (result != ResultOk) {
LOG_ERROR("Error creating producer: " << result);
return -1;
diff --git a/pulsar-client-cpp/examples/SampleConsumer.cc
b/pulsar-client-cpp/examples/SampleConsumer.cc
index e61b793..1dcc550 100644
--- a/pulsar-client-cpp/examples/SampleConsumer.cc
+++ b/pulsar-client-cpp/examples/SampleConsumer.cc
@@ -30,7 +30,7 @@ int main() {
Client client("pulsar://localhost:6650");
Consumer consumer;
- Result result = client.subscribe("persistent://prop/r1/ns1/my-topic",
"consumer-1", consumer);
+ Result result = client.subscribe("persistent://public/default/my-topic",
"consumer-1", consumer);
if (result != ResultOk) {
LOG_ERROR("Failed to subscribe: " << result);
return -1;
diff --git a/pulsar-client-cpp/examples/SampleConsumerListener.cc
b/pulsar-client-cpp/examples/SampleConsumerListener.cc
index 5d60ccd..9ce2291 100644
--- a/pulsar-client-cpp/examples/SampleConsumerListener.cc
+++ b/pulsar-client-cpp/examples/SampleConsumerListener.cc
@@ -38,7 +38,7 @@ int main() {
Consumer consumer;
ConsumerConfiguration config;
config.setMessageListener(listener);
- Result result = client.subscribe("persistent://prop/r1/ns1/my-topic",
"consumer-1", config, consumer);
+ Result result = client.subscribe("persistent://public/default/my-topic",
"consumer-1", config, consumer);
if (result != ResultOk) {
LOG_ERROR("Failed to subscribe: " << result);
return -1;
diff --git a/pulsar-client-cpp/examples/SampleProducer.cc
b/pulsar-client-cpp/examples/SampleFileLogger.cc
similarity index 64%
copy from pulsar-client-cpp/examples/SampleProducer.cc
copy to pulsar-client-cpp/examples/SampleFileLogger.cc
index bc1ece2..fcc3d41 100644
--- a/pulsar-client-cpp/examples/SampleProducer.cc
+++ b/pulsar-client-cpp/examples/SampleFileLogger.cc
@@ -16,30 +16,18 @@
* specific language governing permissions and limitations
* under the License.
*/
-#include <iostream>
-
#include <pulsar/Client.h>
-#include <lib/LogUtils.h>
-
-DECLARE_LOG_OBJECT()
-
using namespace pulsar;
-int main() {
- Client client("pulsar://localhost:6650");
+int main(int argc, char* argv[]) {
+ ClientConfiguration clientConf;
+ // The logs whose level is >= INFO will be written to pulsar-cpp-client.log
+ clientConf.setLogger(new FileLoggerFactory(Logger::Level::LEVEL_INFO,
"pulsar-cpp-client.log"));
+ Client client("pulsar://localhost:6650", clientConf);
Producer producer;
- Result result = client.createProducer("persistent://prop/r1/ns1/my-topic",
producer);
- if (result != ResultOk) {
- LOG_ERROR("Error creating producer: " << result);
- return -1;
- }
-
- // Send synchronously
- Message msg = MessageBuilder().setContent("content").build();
- Result res = producer.send(msg);
- LOG_INFO("Message sent: " << res);
-
+ client.createProducer("my-topic", producer); // just to create some logs
client.close();
+ return 0;
}
diff --git a/pulsar-client-cpp/examples/SampleProducer.cc
b/pulsar-client-cpp/examples/SampleProducer.cc
index bc1ece2..ff50487 100644
--- a/pulsar-client-cpp/examples/SampleProducer.cc
+++ b/pulsar-client-cpp/examples/SampleProducer.cc
@@ -30,7 +30,7 @@ int main() {
Client client("pulsar://localhost:6650");
Producer producer;
- Result result = client.createProducer("persistent://prop/r1/ns1/my-topic",
producer);
+ Result result =
client.createProducer("persistent://public/default/my-topic", producer);
if (result != ResultOk) {
LOG_ERROR("Error creating producer: " << result);
return -1;
diff --git a/pulsar-client-cpp/include/pulsar/Client.h
b/pulsar-client-cpp/include/pulsar/Client.h
index 881d484..1bc2614 100644
--- a/pulsar-client-cpp/include/pulsar/Client.h
+++ b/pulsar-client-cpp/include/pulsar/Client.h
@@ -28,6 +28,8 @@
#include <pulsar/MessageBuilder.h>
#include <pulsar/ClientConfiguration.h>
#include <pulsar/Schema.h>
+#include <pulsar/ConsoleLoggerFactory.h>
+#include <pulsar/FileLoggerFactory.h>
#include <string>
namespace pulsar {
diff --git a/pulsar-client-cpp/include/pulsar/SimpleLoggerFactory.h
b/pulsar-client-cpp/include/pulsar/ConsoleLoggerFactory.h
similarity index 80%
copy from pulsar-client-cpp/include/pulsar/SimpleLoggerFactory.h
copy to pulsar-client-cpp/include/pulsar/ConsoleLoggerFactory.h
index 1ab11dd..7f3f407 100644
--- a/pulsar-client-cpp/include/pulsar/SimpleLoggerFactory.h
+++ b/pulsar-client-cpp/include/pulsar/ConsoleLoggerFactory.h
@@ -23,6 +23,8 @@
namespace pulsar {
+class ConsoleLoggerFactoryImpl;
+
/**
* The default LoggerFactory of Client if `USE_LOG4CXX` macro was not defined
during compilation.
*
@@ -37,22 +39,23 @@ namespace pulsar {
* level simply.
*
* ```c++
- * #include <pulsar/SimpleLoggerFactory.h>
+ * #include <pulsar/ConsoleLoggerFactory.h>
*
* ClientConfiguration conf;
- * conf.setLogger(new SimpleLoggerFactory(Logger::LEVEL_DEBUG));
+ * conf.setLogger(new ConsoleLoggerFactory(Logger::LEVEL_DEBUG));
* Client client("pulsar://localhost:6650", conf);
* ```
*/
-class SimpleLoggerFactory : public LoggerFactory {
+class PULSAR_PUBLIC ConsoleLoggerFactory : public LoggerFactory {
public:
- explicit SimpleLoggerFactory() = default;
- explicit SimpleLoggerFactory(Logger::Level level) : level_(level) {}
+ explicit ConsoleLoggerFactory(Logger::Level level = Logger::LEVEL_INFO);
+
+ ~ConsoleLoggerFactory();
Logger* getLogger(const std::string& fileName) override;
private:
- Logger::Level level_{Logger::LEVEL_INFO};
+ std::unique_ptr<ConsoleLoggerFactoryImpl> impl_;
};
} // namespace pulsar
diff --git a/pulsar-client-cpp/include/pulsar/SimpleLoggerFactory.h
b/pulsar-client-cpp/include/pulsar/FileLoggerFactory.h
similarity index 65%
rename from pulsar-client-cpp/include/pulsar/SimpleLoggerFactory.h
rename to pulsar-client-cpp/include/pulsar/FileLoggerFactory.h
index 1ab11dd..aa6282e 100644
--- a/pulsar-client-cpp/include/pulsar/SimpleLoggerFactory.h
+++ b/pulsar-client-cpp/include/pulsar/FileLoggerFactory.h
@@ -23,9 +23,10 @@
namespace pulsar {
+class FileLoggerFactoryImpl;
+
/**
- * The default LoggerFactory of Client if `USE_LOG4CXX` macro was not defined
during compilation.
- *
+ * A logger factory that is appending logs to a single file.
*
* The log format is "yyyy-mm-dd hh:MM:ss.xxx <level> <thread-id>
<file>:<line> | <msg>", like
*
@@ -33,26 +34,32 @@ namespace pulsar {
* 2021-03-24 17:35:46.571 INFO [0x10a951e00] ConnectionPool:85 | Created
connection for ...
* ```
*
- * It uses `std::cout` to prints logs to standard output. You can use this
factory class to change your log
- * level simply.
+ * Example:
*
* ```c++
- * #include <pulsar/SimpleLoggerFactory.h>
+ * #include <pulsar/FileLoggerFactory.h>
*
* ClientConfiguration conf;
- * conf.setLogger(new SimpleLoggerFactory(Logger::LEVEL_DEBUG));
+ * conf.setLogger(new FileLoggerFactory(Logger::LEVEL_DEBUG,
"pulsar-client-cpp.log"));
* Client client("pulsar://localhost:6650", conf);
* ```
*/
-class SimpleLoggerFactory : public LoggerFactory {
+class PULSAR_PUBLIC FileLoggerFactory : public pulsar::LoggerFactory {
public:
- explicit SimpleLoggerFactory() = default;
- explicit SimpleLoggerFactory(Logger::Level level) : level_(level) {}
+ /**
+ * Create a FileLoggerFactory instance.
+ *
+ * @param level the log level
+ * @param logFilePath the log file's path
+ */
+ FileLoggerFactory(Logger::Level level, const std::string& logFilePath);
+
+ ~FileLoggerFactory();
- Logger* getLogger(const std::string& fileName) override;
+ pulsar::Logger* getLogger(const std::string& filename) override;
private:
- Logger::Level level_{Logger::LEVEL_INFO};
+ std::unique_ptr<FileLoggerFactoryImpl> impl_;
};
} // namespace pulsar
diff --git a/pulsar-client-cpp/lib/ClientImpl.cc
b/pulsar-client-cpp/lib/ClientImpl.cc
index 5edda08..d9a2b57 100644
--- a/pulsar-client-cpp/lib/ClientImpl.cc
+++ b/pulsar-client-cpp/lib/ClientImpl.cc
@@ -26,7 +26,7 @@
#include "PartitionedConsumerImpl.h"
#include "MultiTopicsConsumerImpl.h"
#include "PatternMultiTopicsConsumerImpl.h"
-#include <pulsar/SimpleLoggerFactory.h>
+#include <pulsar/ConsoleLoggerFactory.h>
#include <boost/algorithm/string/predicate.hpp>
#include <sstream>
#include <lib/HTTPLookupService.h>
@@ -101,11 +101,11 @@ ClientImpl::ClientImpl(const std::string& serviceUrl,
const ClientConfiguration&
loggerFactory =
Log4CxxLoggerFactory::create(clientConfiguration_.getLogConfFilePath());
} else {
// Use default simple console logger
- loggerFactory.reset(new SimpleLoggerFactory);
+ loggerFactory.reset(new ConsoleLoggerFactory);
}
#else
// Use default simple console logger
- loggerFactory.reset(new SimpleLoggerFactory);
+ loggerFactory.reset(new ConsoleLoggerFactory);
#endif
}
LogUtils::setLoggerFactory(std::move(loggerFactory));
diff --git a/pulsar-client-cpp/examples/SampleProducer.cc
b/pulsar-client-cpp/lib/ConsoleLoggerFactory.cc
similarity index 57%
copy from pulsar-client-cpp/examples/SampleProducer.cc
copy to pulsar-client-cpp/lib/ConsoleLoggerFactory.cc
index bc1ece2..397c7fe 100644
--- a/pulsar-client-cpp/examples/SampleProducer.cc
+++ b/pulsar-client-cpp/lib/ConsoleLoggerFactory.cc
@@ -16,30 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-#include <iostream>
-#include <pulsar/Client.h>
+#include <pulsar/ConsoleLoggerFactory.h>
+#include "lib/ConsoleLoggerFactoryImpl.h"
-#include <lib/LogUtils.h>
+namespace pulsar {
-DECLARE_LOG_OBJECT()
+ConsoleLoggerFactory::ConsoleLoggerFactory(Logger::Level level)
+ : impl_(new ConsoleLoggerFactoryImpl(level)) {}
-using namespace pulsar;
+ConsoleLoggerFactory::~ConsoleLoggerFactory() {}
-int main() {
- Client client("pulsar://localhost:6650");
+Logger* ConsoleLoggerFactory::getLogger(const std::string& fileName) { return
impl_->getLogger(fileName); }
- Producer producer;
- Result result = client.createProducer("persistent://prop/r1/ns1/my-topic",
producer);
- if (result != ResultOk) {
- LOG_ERROR("Error creating producer: " << result);
- return -1;
- }
-
- // Send synchronously
- Message msg = MessageBuilder().setContent("content").build();
- Result res = producer.send(msg);
- LOG_INFO("Message sent: " << res);
-
- client.close();
-}
+} // namespace pulsar
diff --git a/pulsar-client-cpp/examples/SampleProducer.cc
b/pulsar-client-cpp/lib/ConsoleLoggerFactoryImpl.h
similarity index 57%
copy from pulsar-client-cpp/examples/SampleProducer.cc
copy to pulsar-client-cpp/lib/ConsoleLoggerFactoryImpl.h
index bc1ece2..61c1d90 100644
--- a/pulsar-client-cpp/examples/SampleProducer.cc
+++ b/pulsar-client-cpp/lib/ConsoleLoggerFactoryImpl.h
@@ -16,30 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-#include <iostream>
-#include <pulsar/Client.h>
+#pragma once
-#include <lib/LogUtils.h>
+#include <pulsar/Logger.h>
+#include "lib/SimpleLogger.h"
-DECLARE_LOG_OBJECT()
+namespace pulsar {
-using namespace pulsar;
+class ConsoleLoggerFactoryImpl {
+ public:
+ ConsoleLoggerFactoryImpl(Logger::Level level) : level_(level) {}
-int main() {
- Client client("pulsar://localhost:6650");
+ Logger* getLogger(const std::string& fileName) { return new
SimpleLogger(std::cout, fileName, level_); }
- Producer producer;
- Result result = client.createProducer("persistent://prop/r1/ns1/my-topic",
producer);
- if (result != ResultOk) {
- LOG_ERROR("Error creating producer: " << result);
- return -1;
- }
+ private:
+ Logger::Level level_;
+};
- // Send synchronously
- Message msg = MessageBuilder().setContent("content").build();
- Result res = producer.send(msg);
- LOG_INFO("Message sent: " << res);
-
- client.close();
-}
+} // namespace pulsar
diff --git a/pulsar-client-cpp/examples/SampleProducer.cc
b/pulsar-client-cpp/lib/FileLoggerFactory.cc
similarity index 57%
copy from pulsar-client-cpp/examples/SampleProducer.cc
copy to pulsar-client-cpp/lib/FileLoggerFactory.cc
index bc1ece2..a82613f 100644
--- a/pulsar-client-cpp/examples/SampleProducer.cc
+++ b/pulsar-client-cpp/lib/FileLoggerFactory.cc
@@ -16,30 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-#include <iostream>
+#include <pulsar/FileLoggerFactory.h>
+#include "lib/FileLoggerFactoryImpl.h"
-#include <pulsar/Client.h>
+namespace pulsar {
-#include <lib/LogUtils.h>
+FileLoggerFactory::FileLoggerFactory(Logger::Level level, const std::string&
logFilePath)
+ : impl_(new FileLoggerFactoryImpl(level, logFilePath)) {}
-DECLARE_LOG_OBJECT()
+FileLoggerFactory::~FileLoggerFactory() {}
-using namespace pulsar;
+Logger* FileLoggerFactory::getLogger(const std::string& filename) { return
impl_->getLogger(filename); }
-int main() {
- Client client("pulsar://localhost:6650");
-
- Producer producer;
- Result result = client.createProducer("persistent://prop/r1/ns1/my-topic",
producer);
- if (result != ResultOk) {
- LOG_ERROR("Error creating producer: " << result);
- return -1;
- }
-
- // Send synchronously
- Message msg = MessageBuilder().setContent("content").build();
- Result res = producer.send(msg);
- LOG_INFO("Message sent: " << res);
-
- client.close();
-}
+} // namespace pulsar
diff --git a/pulsar-client-cpp/examples/SampleProducer.cc
b/pulsar-client-cpp/lib/FileLoggerFactoryImpl.h
similarity index 57%
copy from pulsar-client-cpp/examples/SampleProducer.cc
copy to pulsar-client-cpp/lib/FileLoggerFactoryImpl.h
index bc1ece2..75329c6 100644
--- a/pulsar-client-cpp/examples/SampleProducer.cc
+++ b/pulsar-client-cpp/lib/FileLoggerFactoryImpl.h
@@ -16,30 +16,29 @@
* specific language governing permissions and limitations
* under the License.
*/
-#include <iostream>
+#pragma once
-#include <pulsar/Client.h>
+#include <fstream>
+#include <ios>
+#include <string>
+#include <pulsar/Logger.h>
-#include <lib/LogUtils.h>
+#include "lib/SimpleLogger.h"
-DECLARE_LOG_OBJECT()
+namespace pulsar {
-using namespace pulsar;
+class FileLoggerFactoryImpl {
+ public:
+ FileLoggerFactoryImpl(Logger::Level level, const std::string& logFilePath)
+ : level_(level), os_(logFilePath, std::ios_base::out |
std::ios_base::app) {}
-int main() {
- Client client("pulsar://localhost:6650");
+ ~FileLoggerFactoryImpl() { os_.close(); }
- Producer producer;
- Result result = client.createProducer("persistent://prop/r1/ns1/my-topic",
producer);
- if (result != ResultOk) {
- LOG_ERROR("Error creating producer: " << result);
- return -1;
- }
+ Logger* getLogger(const std::string& filename) { return new
SimpleLogger(os_, filename, level_); }
- // Send synchronously
- Message msg = MessageBuilder().setContent("content").build();
- Result res = producer.send(msg);
- LOG_INFO("Message sent: " << res);
+ private:
+ const Logger::Level level_;
+ std::ofstream os_;
+};
- client.close();
-}
+} // namespace pulsar
diff --git a/pulsar-client-cpp/lib/LogUtils.cc
b/pulsar-client-cpp/lib/LogUtils.cc
index 60e7d51..7967fbe 100644
--- a/pulsar-client-cpp/lib/LogUtils.cc
+++ b/pulsar-client-cpp/lib/LogUtils.cc
@@ -20,7 +20,7 @@
#include <atomic>
#include <iostream>
-#include <pulsar/SimpleLoggerFactory.h>
+#include <pulsar/ConsoleLoggerFactory.h>
#include "Log4CxxLogger.h"
@@ -50,7 +50,7 @@ void
LogUtils::setLoggerFactory(std::unique_ptr<LoggerFactory> loggerFactory) {
LoggerFactory* LogUtils::getLoggerFactory() {
if (s_loggerFactory.load() == nullptr) {
- std::unique_ptr<LoggerFactory> newFactory(new SimpleLoggerFactory());
+ std::unique_ptr<LoggerFactory> newFactory(new ConsoleLoggerFactory());
setLoggerFactory(std::move(newFactory));
}
return s_loggerFactory.load();
diff --git a/pulsar-client-cpp/lib/SimpleLoggerFactory.cc
b/pulsar-client-cpp/lib/SimpleLogger.h
similarity index 89%
rename from pulsar-client-cpp/lib/SimpleLoggerFactory.cc
rename to pulsar-client-cpp/lib/SimpleLogger.h
index 5fb5b67..b750336 100644
--- a/pulsar-client-cpp/lib/SimpleLoggerFactory.cc
+++ b/pulsar-client-cpp/lib/SimpleLogger.h
@@ -17,7 +17,7 @@
* under the License.
*/
-#include <pulsar/SimpleLoggerFactory.h>
+#pragma once
#include <iostream>
#include <sstream>
@@ -48,7 +48,8 @@ inline std::ostream &operator<<(std::ostream &s,
Logger::Level level) {
class SimpleLogger : public Logger {
public:
- SimpleLogger(const std::string &filename, Level level) :
filename_(filename), level_(level) {}
+ SimpleLogger(std::ostream &os, const std::string &filename, Level level)
+ : os_(os), filename_(filename), level_(level) {}
bool isEnabled(Level level) { return level >= level_; }
@@ -59,11 +60,12 @@ class SimpleLogger : public Logger {
ss << " " << level << " [" << std::this_thread::get_id() << "] " <<
filename_ << ":" << line << " | "
<< message << "\n";
- std::cout << ss.str();
- std::cout.flush();
+ os_ << ss.str();
+ os_.flush();
}
private:
+ std::ostream &os_;
const std::string filename_;
const Level level_;
@@ -81,6 +83,4 @@ class SimpleLogger : public Logger {
}
};
-Logger *SimpleLoggerFactory::getLogger(const std::string &file) { return new
SimpleLogger(file, level_); }
-
} // namespace pulsar
diff --git a/pulsar-client-cpp/tests/CustomLoggerTest.cc
b/pulsar-client-cpp/tests/CustomLoggerTest.cc
index 8b4cd79..f2a97d1 100644
--- a/pulsar-client-cpp/tests/CustomLoggerTest.cc
+++ b/pulsar-client-cpp/tests/CustomLoggerTest.cc
@@ -17,7 +17,7 @@
* under the License.
*/
#include <pulsar/Client.h>
-#include <pulsar/SimpleLoggerFactory.h>
+#include <pulsar/ConsoleLoggerFactory.h>
#include <LogUtils.h>
#include <gtest/gtest.h>
#include <thread>
@@ -68,29 +68,29 @@ TEST(CustomLoggerTest, testCustomLogger) {
ASSERT_EQ(logLines.size(), 2);
}
-TEST(CustomLoggerTest, testSimpleLoggerFactory) {
- std::unique_ptr<SimpleLoggerFactory> factory(new SimpleLoggerFactory);
+TEST(CustomLoggerTest, testConsoleLoggerFactory) {
+ std::unique_ptr<ConsoleLoggerFactory> factory(new ConsoleLoggerFactory);
std::unique_ptr<Logger> logger(factory->getLogger(__FILE__));
ASSERT_FALSE(logger->isEnabled(Logger::LEVEL_DEBUG));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_INFO));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_WARN));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_ERROR));
- factory.reset(new SimpleLoggerFactory(Logger::LEVEL_DEBUG));
+ factory.reset(new ConsoleLoggerFactory(Logger::LEVEL_DEBUG));
logger.reset(factory->getLogger(__FILE__));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_DEBUG));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_INFO));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_WARN));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_ERROR));
- factory.reset(new SimpleLoggerFactory(Logger::LEVEL_WARN));
+ factory.reset(new ConsoleLoggerFactory(Logger::LEVEL_WARN));
logger.reset(factory->getLogger(__FILE__));
ASSERT_FALSE(logger->isEnabled(Logger::LEVEL_DEBUG));
ASSERT_FALSE(logger->isEnabled(Logger::LEVEL_INFO));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_WARN));
ASSERT_TRUE(logger->isEnabled(Logger::LEVEL_ERROR));
- factory.reset(new SimpleLoggerFactory(Logger::LEVEL_ERROR));
+ factory.reset(new ConsoleLoggerFactory(Logger::LEVEL_ERROR));
logger.reset(factory->getLogger(__FILE__));
ASSERT_FALSE(logger->isEnabled(Logger::LEVEL_DEBUG));
ASSERT_FALSE(logger->isEnabled(Logger::LEVEL_INFO));