|
@@ -9,9 +9,28 @@
|
|
|
|
|
|
|
|
#include "logger/logger.h"
|
|
#include "logger/logger.h"
|
|
|
|
|
|
|
|
|
|
+namespace logging {
|
|
|
|
|
+ void PrintTo(location_info const & info, std::ostream * os) {
|
|
|
|
|
+ if (info.line) {
|
|
|
|
|
+ (*os) << "{\"" << info.filename << "\", \"" <<
|
|
|
|
|
+ info.function << "\", " << info.line << "}";
|
|
|
|
|
+ } else {
|
|
|
|
|
+ (*os) << "NULL";
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ void PrintTo(logpacket const & pkt, std::ostream * os) {
|
|
|
|
|
+ (*os) << "{ " << logging::level_header(pkt.level) << ", ";
|
|
|
|
|
+ PrintTo(pkt.info, os);
|
|
|
|
|
+ (*os) << ", \"" << pkt.logger << "\", \"" << pkt.message << "\" }";
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
struct MockLoggerImpl : public logging::logger_impl {
|
|
struct MockLoggerImpl : public logging::logger_impl {
|
|
|
MockLoggerImpl() {
|
|
MockLoggerImpl() {
|
|
|
- min_log_level = logging::LTRACE;
|
|
|
|
|
|
|
+ SetLogLevel(logging::LTRACE);
|
|
|
|
|
+ }
|
|
|
|
|
+ void SetLogLevel(logging::log_level ll) {
|
|
|
|
|
+ min_log_level = ll;
|
|
|
}
|
|
}
|
|
|
MOCK_METHOD0(flush, void());
|
|
MOCK_METHOD0(flush, void());
|
|
|
MOCK_METHOD1(write, void(logging::logpacket const &));
|
|
MOCK_METHOD1(write, void(logging::logpacket const &));
|
|
@@ -25,7 +44,6 @@ struct LoggerTest : public testing::Test {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
using namespace logging;
|
|
using namespace logging;
|
|
|
-using namespace testing;
|
|
|
|
|
|
|
|
|
|
struct t_logger : public logger {
|
|
struct t_logger : public logger {
|
|
|
t_logger(std::string const & name, std::shared_ptr<logger_impl> impl)
|
|
t_logger(std::string const & name, std::shared_ptr<logger_impl> impl)
|
|
@@ -34,6 +52,7 @@ struct t_logger : public logger {
|
|
|
|
|
|
|
|
void LoggerTest::SetUp() {
|
|
void LoggerTest::SetUp() {
|
|
|
pimpl.reset(new MockLoggerImpl);
|
|
pimpl.reset(new MockLoggerImpl);
|
|
|
|
|
+ using testing::AnyNumber;
|
|
|
EXPECT_CALL(*pimpl, flush()).Times(AnyNumber());
|
|
EXPECT_CALL(*pimpl, flush()).Times(AnyNumber());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -44,6 +63,18 @@ void LoggerTest::TearDown() {
|
|
|
TEST_F(LoggerTest, LogsWithBraceFmtCode) {
|
|
TEST_F(LoggerTest, LogsWithBraceFmtCode) {
|
|
|
using testing::Field;
|
|
using testing::Field;
|
|
|
EXPECT_CALL(*pimpl, write(Field(&logpacket::message, "5"))).Times(1);
|
|
EXPECT_CALL(*pimpl, write(Field(&logpacket::message, "5"))).Times(1);
|
|
|
- logger LOG = t_logger("", pimpl);
|
|
|
|
|
- LOG.log(LERROR, "{}", 5);
|
|
|
|
|
|
|
+ t_logger("", pimpl).log(LERROR, "{}", 5);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+TEST_F(LoggerTest, DoesNotLogAboveLevel) {
|
|
|
|
|
+ using testing::_;
|
|
|
|
|
+ pimpl->SetLogLevel(LFATAL);
|
|
|
|
|
+ EXPECT_CALL(*pimpl, write(_)).Times(0);
|
|
|
|
|
+ t_logger("", pimpl).log(LERROR, "{}", 5);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+TEST_F(LoggerTest, LogCurlyBraceLiteralByDoubling) {
|
|
|
|
|
+ using testing::Field;
|
|
|
|
|
+ EXPECT_CALL(*pimpl, write(Field(&logpacket::message, "{}"))).Times(1);
|
|
|
|
|
+ t_logger("", pimpl).log(LERROR, "{{}}", 5);
|
|
|
}
|
|
}
|