From 48ac62a68b52d7f3f2775985267570e777393796 Mon Sep 17 00:00:00 2001
From: Sergey Yakubov <sergey.yakubov@desy.de>
Date: Thu, 3 May 2018 16:12:42 +0200
Subject: [PATCH] logs for producer

---
 common/cpp/CMakeLists.txt                     |  2 +
 common/cpp/include/logger/logger.h            |  3 +-
 common/cpp/include/unittests/MockLogger.h     | 25 +++++++++
 common/cpp/src/logger/fluentd_sink.cpp        |  4 +-
 common/cpp/src/logger/logger_factory.cpp      |  6 +--
 common/cpp/src/logger/spd_logger.cpp          |  4 +-
 common/cpp/src/logger/spd_logger.h            |  4 +-
 config/fluentd/fluentd.conf                   |  4 +-
 producer/api/CMakeLists.txt                   |  8 +--
 producer/api/include/producer/producer.h      |  7 +++
 producer/api/src/producer_impl.cpp            | 37 +++++++++++--
 producer/api/src/producer_impl.h              |  6 +++
 producer/api/unittests/test_producer_impl.cpp | 54 +++++++++++++++++--
 .../spd_logger/console/check_linux.sh         | 40 +++++++-------
 .../spd_logger/console/check_windows.bat      | 40 +++++++-------
 .../spd_logger/console/spd_logger_console.cpp | 42 +++++++--------
 .../spd_logger/fluentd/check_linux.sh         |  8 +--
 .../spd_logger/fluentd/check_windows.bat      |  8 +--
 .../spd_logger/fluentd/spd_logger_fluentd.cpp |  8 +--
 19 files changed, 214 insertions(+), 96 deletions(-)
 create mode 100644 common/cpp/include/unittests/MockLogger.h

diff --git a/common/cpp/CMakeLists.txt b/common/cpp/CMakeLists.txt
index e56f7e57a..c8fb609a2 100644
--- a/common/cpp/CMakeLists.txt
+++ b/common/cpp/CMakeLists.txt
@@ -18,3 +18,5 @@ endif()
 install(DIRECTORY ${HIDRA2_CXX_COMMON_INCLUDE_DIR}/common
         DESTINATION ${CMAKE_INSTALL_PREFIX}/include )
 
+install(DIRECTORY ${HIDRA2_CXX_COMMON_INCLUDE_DIR}/logger
+        DESTINATION ${CMAKE_INSTALL_PREFIX}/include )
diff --git a/common/cpp/include/logger/logger.h b/common/cpp/include/logger/logger.h
index a8ac22b56..fd146c95b 100644
--- a/common/cpp/include/logger/logger.h
+++ b/common/cpp/include/logger/logger.h
@@ -21,8 +21,9 @@ class AbstractLogger {
     virtual void Error(const std::string& text) = 0;
     virtual void Debug(const std::string& text) = 0;
     virtual void Warning(const std::string& text) = 0;
+    virtual void EnableLocalLog(bool enable) = 0;
+    virtual void EnableRemoteLog(bool enable) = 0;
     virtual ~AbstractLogger() = default;
-
 };
 
 using Logger = std::unique_ptr<AbstractLogger>;
diff --git a/common/cpp/include/unittests/MockLogger.h b/common/cpp/include/unittests/MockLogger.h
new file mode 100644
index 000000000..61aa52bfc
--- /dev/null
+++ b/common/cpp/include/unittests/MockLogger.h
@@ -0,0 +1,25 @@
+#ifndef HIDRA2_MOCKLOGGER_H
+#define HIDRA2_MOCKLOGGER_H
+
+#include <gmock/gmock.h>
+#include <gtest/gtest.h>
+
+#include "logger/logger.h"
+
+namespace hidra2 {
+
+class MockLogger : public AbstractLogger {
+  public:
+    MOCK_METHOD1(Info, void(const std::string&));
+    MOCK_METHOD1(Error, void(const std::string& ));
+    MOCK_METHOD1(Debug, void(const std::string& ));
+    MOCK_METHOD1(Warning, void(const std::string& ));
+    MOCK_METHOD1(SetLogLevel, void(LogLevel));
+    MOCK_METHOD1(EnableLocalLog, void(bool));
+    MOCK_METHOD1(EnableRemoteLog, void(bool));
+
+};
+
+}
+
+#endif //HIDRA2_MOCKLOGGER_H
diff --git a/common/cpp/src/logger/fluentd_sink.cpp b/common/cpp/src/logger/fluentd_sink.cpp
index 231ae641b..92c81bd56 100644
--- a/common/cpp/src/logger/fluentd_sink.cpp
+++ b/common/cpp/src/logger/fluentd_sink.cpp
@@ -7,12 +7,12 @@ namespace hidra2 {
 void FluentdSink::_sink_it(const spdlog::details::log_msg& msg) {
     std::string log_str = msg.formatted.str();
     HttpCode code;
-    Error err;
     log_str.erase(log_str.find_last_not_of("\n\r\t") + 1);
     std::string string_to_send = "json={\"message\":\"" + log_str + "\"}";
+    Error err;
     httpclient__->Post(endpoint_uri_, string_to_send, &code, &err);
     if (err) {
-        std::cerr << err->Explain();
+        std::cerr << "cannot send logs - " + err->Explain() << std::endl;
     }
 }
 
diff --git a/common/cpp/src/logger/logger_factory.cpp b/common/cpp/src/logger/logger_factory.cpp
index e13b425ec..9a57f02d5 100644
--- a/common/cpp/src/logger/logger_factory.cpp
+++ b/common/cpp/src/logger/logger_factory.cpp
@@ -4,12 +4,12 @@ namespace hidra2 {
 
 Logger CreateLogger(std::string name, bool console, bool centralized_log, const std::string& endpoint_uri) {
     auto logger = new SpdLogger{name, endpoint_uri};
-    logger->SetLogLevel(LogLevel::Error);
+    logger->SetLogLevel(LogLevel::Info);
     if (console) {
-        logger->EnableConsoleLog(true);
+        logger->EnableLocalLog(true);
     }
     if (centralized_log) {
-        logger->EnableCentralizedLog(true);
+        logger->EnableRemoteLog(true);
     }
 
     return Logger{logger};
diff --git a/common/cpp/src/logger/spd_logger.cpp b/common/cpp/src/logger/spd_logger.cpp
index be06859e0..5db29c122 100644
--- a/common/cpp/src/logger/spd_logger.cpp
+++ b/common/cpp/src/logger/spd_logger.cpp
@@ -32,7 +32,7 @@ void SpdLogger::Info(const std::string& text) {
     }
 }
 
-void SpdLogger::EnableConsoleLog(bool enable) {
+void SpdLogger::EnableLocalLog(bool enable) {
     console_log_ = enable;
     UpdateLoggerSinks();
 }
@@ -72,7 +72,7 @@ void SpdLogger::Warning(const std::string& text) {
     }
 }
 
-void SpdLogger::EnableCentralizedLog(bool enable) {
+void SpdLogger::EnableRemoteLog(bool enable) {
     centralized_log_ = enable;
     UpdateLoggerSinks();
 }
diff --git a/common/cpp/src/logger/spd_logger.h b/common/cpp/src/logger/spd_logger.h
index 4d84934e7..32097315a 100644
--- a/common/cpp/src/logger/spd_logger.h
+++ b/common/cpp/src/logger/spd_logger.h
@@ -14,8 +14,8 @@ class SpdLogger : public AbstractLogger {
     void Error(const std::string& text) override;
     void Debug(const std::string& text) override;
     void Warning(const std::string& text) override;
-    void EnableConsoleLog(bool enable);
-    void EnableCentralizedLog(bool enable);
+    void EnableLocalLog(bool enable) override;
+    void EnableRemoteLog(bool enable) override;
     ~SpdLogger() = default;
     std::unique_ptr<spdlog::logger> log__;
   private:
diff --git a/config/fluentd/fluentd.conf b/config/fluentd/fluentd.conf
index 94120820a..faa87694e 100644
--- a/config/fluentd/fluentd.conf
+++ b/config/fluentd/fluentd.conf
@@ -20,7 +20,7 @@ key_name message
 reserve_data true
 <parse>
     @type regexp
-    expression /\[(?<time>[^\]]*)\] \[(?<source>[^ ]*)\] \[(?<level>[^ ]*)\] (?<message>[^ ]*)/
+    expression /\[(?<time>[^\]]*)\] \[(?<source>[^ ]*)\] \[(?<level>[^ ]*)\] (?<message>[^\n]*)/        
     time_key time
     time_format %Y-%m-%d %H:%M:%S.%N
   </parse>
@@ -47,3 +47,5 @@ reserve_data true
   path /tmp/fluentd/asapo
   </store>
 </match>
+
+
diff --git a/producer/api/CMakeLists.txt b/producer/api/CMakeLists.txt
index 2c9da5a95..806daaf9f 100644
--- a/producer/api/CMakeLists.txt
+++ b/producer/api/CMakeLists.txt
@@ -9,10 +9,10 @@ set(SOURCE_FILES
 ################################
 # Library
 ################################
-add_library(${TARGET_NAME} STATIC ${SOURCE_FILES} $<TARGET_OBJECTS:system_io>)
-target_include_directories(${TARGET_NAME} PUBLIC include)
-set_target_properties(${TARGET_NAME} PROPERTIES LINKER_LANGUAGE CXX)
-target_include_directories(${TARGET_NAME} PUBLIC ${HIDRA2_CXX_COMMON_INCLUDE_DIR})
+add_library(${TARGET_NAME} STATIC ${SOURCE_FILES} $<TARGET_OBJECTS:system_io> $<TARGET_OBJECTS:logger>
+        $<TARGET_OBJECTS:curl_http_client> )
+target_include_directories(${TARGET_NAME} PUBLIC include ${HIDRA2_CXX_COMMON_INCLUDE_DIR})
+target_link_libraries(${TARGET_NAME} ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
 
 ################################
 # Testing
diff --git a/producer/api/include/producer/producer.h b/producer/api/include/producer/producer.h
index 3f7583875..0ff7a2629 100644
--- a/producer/api/include/producer/producer.h
+++ b/producer/api/include/producer/producer.h
@@ -5,6 +5,7 @@
 #include <string>
 
 #include "producer_error.h"
+#include "logger/logger.h"
 
 namespace hidra2 {
 
@@ -47,6 +48,12 @@ class Producer {
       \return Error - Will be nullptr on success
     */
     virtual Error Send(uint64_t file_id, const void* data, size_t file_size) = 0;
+    //! Set internal log level
+    virtual void SetLogLevel(LogLevel level) = 0;
+    //! Enables/Disables logs output to stdout
+    virtual void EnableLocalLog(bool enable) = 0;
+    //! Enables/Disables sending logs to the central server
+    virtual void EnableRemoteLog(bool enable) = 0;
 };
 }
 
diff --git a/producer/api/src/producer_impl.cpp b/producer/api/src/producer_impl.cpp
index f3ec4e49a..66f90ab08 100644
--- a/producer/api/src/producer_impl.cpp
+++ b/producer/api/src/producer_impl.cpp
@@ -10,6 +10,8 @@ const uint32_t ProducerImpl::kVersion = 1;
 const size_t ProducerImpl::kMaxChunkSize = size_t(1024) * size_t(1024) * size_t(1024) * size_t(2); //2GiByte
 
 ProducerImpl::ProducerImpl(): io__{GenerateDefaultIO()} {
+    //todo get fluentd uri from service discovery
+    log__ = CreateDefaultLoggerApi("producer_api", "http://localhost:9880/asapo");
 }
 
 uint64_t ProducerImpl::GetVersion() const {
@@ -24,9 +26,11 @@ Error ProducerImpl::InitializeSocketToReceiver(const std::string& receiver_addre
     Error err;
     FileDescriptor fd = io__->CreateAndConnectIPTCPSocket(receiver_address, &err);
     if(err != nullptr) {
+        log__->Debug("cannot connect to receiver at " + receiver_address + " - " + err->Explain());
         return err;
     }
 
+    receiver_uri_ = receiver_address;
     client_fd_ = fd;
     return nullptr;
 }
@@ -43,6 +47,7 @@ Error ProducerImpl::ConnectToReceiver(const std::string& receiver_address) {
     }
 
     status_ = ProducerStatus::kConnected;
+    log__->Info("connected to receiver at " + receiver_address);
     return nullptr;
 }
 
@@ -59,13 +64,14 @@ Error ProducerImpl::SendHeaderAndData(const GenericNetworkRequestHeader& header,
     Error io_error;
     io__->Send(client_fd_, &header, sizeof(header), &io_error);
     if(io_error) {
-        std::cerr << "ProducerImpl::Send/DataRequest error" << io_error << std::endl;
+// todo: add meaningful message to the io_error (here and below)
+//        std::cerr << "ProducerImpl::Send/DataRequest error" << io_error << std::endl;
         return io_error;
     }
 
     io__->Send(client_fd_, data, file_size, &io_error);
     if(io_error) {
-        std::cerr << "ProducerImpl::Send/data error" << io_error << std::endl;
+//        std::cerr << "ProducerImpl::Send/data error" << io_error << std::endl;
         return io_error;
     }
 
@@ -77,7 +83,7 @@ Error ProducerImpl::ReceiveResponce() {
     SendDataResponse sendDataResponse;
     io__->Receive(client_fd_, &sendDataResponse, sizeof(sendDataResponse), &err);
     if(err != nullptr) {
-        std::cerr << "ProducerImpl::Receive error: " << err << std::endl;
+//        std::cerr << "ProducerImpl::Receive error: " << err << std::endl;
         return err;
     }
 
@@ -85,7 +91,7 @@ Error ProducerImpl::ReceiveResponce() {
         if(sendDataResponse.error_code == kNetErrorFileIdAlreadyInUse) {
             return ProducerErrorTemplates::kFileIdAlreadyInUse.Generate();
         }
-        std::cerr << "Server reported an error. NetErrorCode: " << int(sendDataResponse.error_code) << std::endl;
+//        std::cerr << "Server reported an error. NetErrorCode: " << int(sendDataResponse.error_code) << std::endl;
         return ProducerErrorTemplates::kUnknownServerError.Generate();
     }
     return nullptr;
@@ -104,10 +110,31 @@ Error ProducerImpl::Send(uint64_t file_id, const void* data, size_t file_size) {
 
     auto  error = SendHeaderAndData(send_data_request, data, file_size);
     if(error) {
+        log__->Debug("error sending to " + receiver_uri_ + " - " + error->Explain());
         return error;
     }
 
-    return ReceiveResponce();
+    error =  ReceiveResponce();
+    if(error) {
+        log__->Debug("error receiving response from " + receiver_uri_ + " - " + error->Explain());
+        return error;
+    }
+
+    log__->Debug("succesfully sent data to " + receiver_uri_);
+
+    return nullptr;
+}
+
+void ProducerImpl::SetLogLevel(LogLevel level) {
+    log__->SetLogLevel(level);
+}
+
+void ProducerImpl::EnableLocalLog(bool enable) {
+    log__->EnableLocalLog(enable);
+}
+
+void ProducerImpl::EnableRemoteLog(bool enable) {
+    log__->EnableRemoteLog(enable);
 }
 
 }
\ No newline at end of file
diff --git a/producer/api/src/producer_impl.h b/producer/api/src/producer_impl.h
index 05797c505..755dfbbbf 100644
--- a/producer/api/src/producer_impl.h
+++ b/producer/api/src/producer_impl.h
@@ -5,6 +5,7 @@
 #include <common/networking.h>
 #include <io/io.h>
 #include "producer/producer.h"
+#include "logger/logger.h"
 
 namespace hidra2 {
 class ProducerImpl : public Producer {
@@ -12,6 +13,7 @@ class ProducerImpl : public Producer {
     static const uint32_t kVersion;
 
     int         client_fd_ = -1;
+    std::string receiver_uri_;
     uint64_t    request_id_ = 0;
 
     ProducerStatus status_ = ProducerStatus::kDisconnected;
@@ -30,9 +32,13 @@ class ProducerImpl : public Producer {
 
     uint64_t GetVersion() const override;
     ProducerStatus GetStatus() const override;
+    void SetLogLevel(LogLevel level) override;
+    void EnableLocalLog(bool enable) override;
+    void EnableRemoteLog(bool enable) override;
     Error ConnectToReceiver(const std::string& receiver_address) override;
     Error Send(uint64_t file_id, const void* data, size_t file_size) override;
     std::unique_ptr<IO> io__;
+    Logger log__;
 };
 }
 
diff --git a/producer/api/unittests/test_producer_impl.cpp b/producer/api/unittests/test_producer_impl.cpp
index 373316649..242e5d675 100644
--- a/producer/api/unittests/test_producer_impl.cpp
+++ b/producer/api/unittests/test_producer_impl.cpp
@@ -1,21 +1,25 @@
 #include <gtest/gtest.h>
 #include <gmock/gmock.h>
-#include <unittests/MockIO.h>
 
+#include "unittests/MockIO.h"
+#include "unittests/MockLogger.h"
 #include "common/error.h"
 #include "io/io.h"
 #include "producer/producer.h"
 #include "../src/producer_impl.h"
 
 namespace {
+
 using ::testing::Return;
 using ::testing::_;
 using ::testing::DoAll;
 using ::testing::SetArgReferee;
 using ::testing::Gt;
 using ::testing::Eq;
+using ::testing::Ne;
 using ::testing::Mock;
 using ::testing::InSequence;
+using ::testing::HasSubstr;
 
 TEST(get_version, VersionAboveZero) {
     hidra2::ProducerImpl producer;
@@ -23,6 +27,11 @@ TEST(get_version, VersionAboveZero) {
 }
 
 
+TEST(Producer, Logger) {
+    hidra2::ProducerImpl producer;
+    ASSERT_THAT(dynamic_cast<hidra2::AbstractLogger*>(producer.log__.get()), Ne(nullptr));
+}
+
 /**
  * ConnectToReceiver
  */
@@ -31,6 +40,8 @@ class ProducerImpl : public testing::Test {
   public:
     hidra2::ProducerImpl producer;
     testing::NiceMock<hidra2::MockIO> mock_io;
+    testing::NiceMock<hidra2::MockLogger> mock_logger;
+
     hidra2::FileDescriptor expected_fd = 83942;
     uint64_t expected_file_id = 4224;
     std::string expected_address = "127.0.0.1:9090";
@@ -40,20 +51,22 @@ class ProducerImpl : public testing::Test {
 
     void SetUp() override {
         producer.io__ = std::unique_ptr<hidra2::IO> {&mock_io};
+        producer.log__ = hidra2::Logger {&mock_logger};
     }
     void TearDown() override {
         producer.io__.release();
+        producer.log__.release();
     }
 
     void ConnectToReceiver_DONE(hidra2::FileDescriptor expected_fd = 1) {
-        EXPECT_CALL(mock_io, CreateAndConnectIPTCPSocket_t(_, _))
+        EXPECT_CALL(mock_io, CreateAndConnectIPTCPSocket_t(expected_address, _))
         .Times(1)
         .WillOnce(
             DoAll(
                 testing::SetArgPointee<1>(nullptr),
                 Return(expected_fd)
             ));
-        producer.ConnectToReceiver("");
+        producer.ConnectToReceiver(expected_address);
     }
     void Send_DONE(int times = 1) {
         EXPECT_CALL(mock_io, Send_t(_, _, _, _))
@@ -81,6 +94,8 @@ TEST_F(ProducerImpl, ConnectToReceiver__CreateAndConnectIPTCPSocket_error) {
             Return(-1)
         ));
 
+    EXPECT_CALL(mock_logger, Debug(HasSubstr("cannot connect")));
+
     auto error = producer.ConnectToReceiver(expected_address);
     auto status = producer.GetStatus();
 
@@ -97,6 +112,9 @@ TEST_F(ProducerImpl, ConnectToReceiver) {
             Return(expected_fd)
         ));
 
+    EXPECT_CALL(mock_logger, Info(HasSubstr("connected")));
+
+
     auto error = producer.ConnectToReceiver(expected_address);
     auto status = producer.GetStatus();
 
@@ -183,6 +201,7 @@ TEST_F(ProducerImpl, Send__sendData_error) {
             Return(-1)
         ));
 
+    EXPECT_CALL(mock_logger, Debug(HasSubstr("error sending to " + expected_address)));
 
     auto error = producer.Send(expected_file_id, expected_file_pointer, expected_file_size);
 
@@ -204,6 +223,8 @@ TEST_F(ProducerImpl, Send__Receive_error) {
             testing::Return(-1)
         ));
 
+    EXPECT_CALL(mock_logger, Debug(HasSubstr("error receiving response from " + expected_address)));
+
     auto error = producer.Send(expected_file_id, expected_file_pointer, expected_file_size);
 
     ASSERT_THAT(error, Eq(hidra2::IOErrorTemplates::kBadFileNumber));
@@ -267,9 +288,36 @@ TEST_F(ProducerImpl, Send) {
             testing::ReturnArg<2>()
         ));
 
+    EXPECT_CALL(mock_logger, Debug(HasSubstr("succesfully sent data to " + expected_address)));
+
     auto error = producer.Send(expected_file_id, expected_file_pointer, expected_file_size);
 
     ASSERT_THAT(error, Eq(nullptr));
 }
 
+TEST_F(ProducerImpl, EnableLocalLog) {
+
+    EXPECT_CALL(mock_logger, EnableLocalLog(true));
+
+    producer.EnableLocalLog(true);
+
+}
+
+TEST_F(ProducerImpl, EnableRemoteLog) {
+
+    EXPECT_CALL(mock_logger, EnableRemoteLog(false));
+
+    producer.EnableRemoteLog(false);
+
+}
+
+
+TEST_F(ProducerImpl, SetLogLevel) {
+
+    EXPECT_CALL(mock_logger, SetLogLevel(hidra2::LogLevel::Warning));
+
+    producer.SetLogLevel(hidra2::LogLevel::Warning);
+
+}
+
 }
diff --git a/tests/automatic/spd_logger/console/check_linux.sh b/tests/automatic/spd_logger/console/check_linux.sh
index 9aba0eea3..5c055c579 100644
--- a/tests/automatic/spd_logger/console/check_linux.sh
+++ b/tests/automatic/spd_logger/console/check_linux.sh
@@ -4,36 +4,36 @@ set -e
 
 res=`$@`
 
-echo $res | grep "\[info\] test_info"
-echo $res | grep "\[error\] test_error"
-echo $res | grep "\[debug\] test_debug"
-echo $res | grep "\[warning\] test_warning"
-echo $res | grep "test_info_mt_0"
-echo $res | grep "test_info_mt_1"
-echo $res | grep "test_info_mt_2"
-echo $res | grep "test_info_mt_3"
+echo $res | grep "\[info\] test info"
+echo $res | grep "\[error\] test error"
+echo $res | grep "\[debug\] test debug"
+echo $res | grep "\[warning\] test warning"
+echo $res | grep "test info_mt_0"
+echo $res | grep "test info_mt_1"
+echo $res | grep "test info_mt_2"
+echo $res | grep "test info_mt_3"
 echo $res | grep "test_logger"
 
 
 #error_lev
-echo $res | grep "test_error_errorlev"
-! echo $res | grep "test_debug_errorlev"
-! echo $res | grep "test_info_errorlev"
-! echo $res | grep "test_warning_errorlev"
+echo $res | grep "test error_errorlev"
+! echo $res | grep "test debug_errorlev"
+! echo $res | grep "test info_errorlev"
+! echo $res | grep "test warning_errorlev"
 
 
 #warning_lev
-echo $res | grep "test_error_warninglev"
-! echo $res | grep "test_debug_warninglev"
-! echo $res | grep "test_info_warninglev"
-echo $res | grep "test_warning_warninglev"
+echo $res | grep "test error_warninglev"
+! echo $res | grep "test debug_warninglev"
+! echo $res | grep "test info_warninglev"
+echo $res | grep "test warning_warninglev"
 
 
 #info_lev
-echo $res | grep "test_error_infolev"
-! echo $res | grep "test_debug_infolev"
-echo $res | grep "test_info_infolev"
-echo $res | grep "test_warning_infolev"
+echo $res | grep "test error_infolev"
+! echo $res | grep "test debug_infolev"
+echo $res | grep "test info_infolev"
+echo $res | grep "test warning_infolev"
 
 
 #none_lev
diff --git a/tests/automatic/spd_logger/console/check_windows.bat b/tests/automatic/spd_logger/console/check_windows.bat
index 8ed466f7e..1bbc2b0ba 100644
--- a/tests/automatic/spd_logger/console/check_windows.bat
+++ b/tests/automatic/spd_logger/console/check_windows.bat
@@ -1,32 +1,32 @@
 "%1" > output
 
-findstr /I /L /C:"[info] test_info" output || goto :error
-findstr /I /L /C:"[error] test_error" output || goto :error
-findstr /I /L /C:"[debug] test_debug"  output|| goto :error
-findstr /I /L /C:"[warning] test_warning" output || goto :error
-findstr /I /L /C:"test_info_mt_0" output || goto :error
-findstr /I /L /C:"test_info_mt_1" output || goto :error
-findstr /I /L /C:"test_info_mt_2" output || goto :error
-findstr /I /L /C:"test_info_mt_3" output || goto :error
+findstr /I /L /C:"[info] test info" output || goto :error
+findstr /I /L /C:"[error] test error" output || goto :error
+findstr /I /L /C:"[debug] test debug"  output|| goto :error
+findstr /I /L /C:"[warning] test warning" output || goto :error
+findstr /I /L /C:"test info_mt_0" output || goto :error
+findstr /I /L /C:"test info_mt_1" output || goto :error
+findstr /I /L /C:"test info_mt_2" output || goto :error
+findstr /I /L /C:"test info_mt_3" output || goto :error
 findstr /I /L /C:"test_logger" output || goto :error
 
 REM error_lev
-findstr /I /L /C:"test_error_errorlev" output || goto :error
-findstr /I /L /C:"test_debug_errorlev" output  && goto :error
-findstr /I /L /C:"test_info_errorlev" output && goto :error
-findstr /I /L /C:"test_warning_errorlev" output && goto :error
+findstr /I /L /C:"test error_errorlev" output || goto :error
+findstr /I /L /C:"test debug_errorlev" output  && goto :error
+findstr /I /L /C:"test info_errorlev" output && goto :error
+findstr /I /L /C:"test warning_errorlev" output && goto :error
 
 REM warning_lev
-findstr /I /L /C:"test_error_warninglev" output || goto :error
-findstr /I /L /C:"test_debug_warninglev" output && goto :error
-findstr /I /L /C:"test_info_warninglev" output && goto :error
-findstr /I /L /C:"test_warning_warninglev" output  || goto :error
+findstr /I /L /C:"test error_warninglev" output || goto :error
+findstr /I /L /C:"test debug_warninglev" output && goto :error
+findstr /I /L /C:"test info_warninglev" output && goto :error
+findstr /I /L /C:"test warning_warninglev" output  || goto :error
 
 REM info_lev
-findstr /I /L /C:"test_error_infolev" output || goto :error
-findstr /I /L /C:"test_debug_infolev" output && goto :error
-findstr /I /L /C:"test_info_infolev" output || goto :error
-findstr /I /L /C:"test_warning_infolev" output || goto :error
+findstr /I /L /C:"test error_infolev" output || goto :error
+findstr /I /L /C:"test debug_infolev" output && goto :error
+findstr /I /L /C:"test info_infolev" output || goto :error
+findstr /I /L /C:"test warning_infolev" output || goto :error
 
 REM none_lev
 findstr /I /L /C:"nonelev" output && goto :error
diff --git a/tests/automatic/spd_logger/console/spd_logger_console.cpp b/tests/automatic/spd_logger/console/spd_logger_console.cpp
index 2659b7f00..4bded1997 100644
--- a/tests/automatic/spd_logger/console/spd_logger_console.cpp
+++ b/tests/automatic/spd_logger/console/spd_logger_console.cpp
@@ -12,7 +12,7 @@ int main(int argc, char* argv[]) {
     logger->SetLogLevel(LogLevel::Debug);
 
     auto exec = [&](const std::string & i) {
-        logger->Info("test_info_mt_" + i);
+        logger->Info("test info_mt_" + i);
     };
 
     std::vector<std::thread> threads;
@@ -24,36 +24,36 @@ int main(int argc, char* argv[]) {
         thread.join();
     }
 
-    logger->Info("test_info");
-    logger->Error("test_error");
-    logger->Warning("test_warning");
-    logger->Debug("test_debug");
+    logger->Info("test info");
+    logger->Error("test error");
+    logger->Warning("test warning");
+    logger->Debug("test debug");
 
 
     logger->SetLogLevel(LogLevel::Error);
-    logger->Info("test_info_errorlev");
-    logger->Error("test_error_errorlev");
-    logger->Warning("test_warning_errorlev");
-    logger->Debug("test_debug_errorlev");
+    logger->Info("test info_errorlev");
+    logger->Error("test error_errorlev");
+    logger->Warning("test warning_errorlev");
+    logger->Debug("test debug_errorlev");
 
 
     logger->SetLogLevel(LogLevel::Warning);
-    logger->Info("test_info_warninglev");
-    logger->Error("test_error_warninglev");
-    logger->Warning("test_warning_warninglev");
-    logger->Debug("test_debug_warninglev");
+    logger->Info("test info_warninglev");
+    logger->Error("test error_warninglev");
+    logger->Warning("test warning_warninglev");
+    logger->Debug("test debug_warninglev");
 
     logger->SetLogLevel(LogLevel::Info);
-    logger->Info("test_info_infolev");
-    logger->Error("test_error_infolev");
-    logger->Warning("test_warning_infolev");
-    logger->Debug("test_debug_infolev");
+    logger->Info("test info_infolev");
+    logger->Error("test error_infolev");
+    logger->Warning("test warning_infolev");
+    logger->Debug("test debug_infolev");
 
     logger->SetLogLevel(LogLevel::None);
-    logger->Info("test_info_nonelev");
-    logger->Error("test_error_nonelev");
-    logger->Warning("test_warning_nonelev");
-    logger->Debug("test_debug_nonelev");
+    logger->Info("test info_nonelev");
+    logger->Error("test error_nonelev");
+    logger->Warning("test warning_nonelev");
+    logger->Debug("test debug_nonelev");
 
 
     return 0;
diff --git a/tests/automatic/spd_logger/fluentd/check_linux.sh b/tests/automatic/spd_logger/fluentd/check_linux.sh
index 50942dfa4..2a9b53535 100644
--- a/tests/automatic/spd_logger/fluentd/check_linux.sh
+++ b/tests/automatic/spd_logger/fluentd/check_linux.sh
@@ -12,8 +12,8 @@ cat /tmp/fluentd/asapo.*.log
 
 res=`cat /tmp/fluentd/asapo.*.log`
 
-echo $res | grep "test_info"
-echo $res | grep "test_error"
-echo $res | grep "test_debug"
-echo $res | grep "test_warning"
+echo $res | grep "test info"
+echo $res | grep "test error"
+echo $res | grep "test debug"
+echo $res | grep "test warning"
 
diff --git a/tests/automatic/spd_logger/fluentd/check_windows.bat b/tests/automatic/spd_logger/fluentd/check_windows.bat
index 2edd95733..ce8be6302 100644
--- a/tests/automatic/spd_logger/fluentd/check_windows.bat
+++ b/tests/automatic/spd_logger/fluentd/check_windows.bat
@@ -5,10 +5,10 @@ del %folder%\asapo.*.log
 
 ping 1.0.0.0 -n 5 > nul
 
-findstr /I /L /C:"test_info" %folder%\asapo.*.log || goto :error
-findstr /I /L /C:"test_error" %folder%\asapo.*.log || goto :error
-findstr /I /L /C:"test_debug" %folder%\asapo.*.log || goto :error
-findstr /I /L /C:"test_warning" %folder%\asapo.*.log || goto :error
+findstr /I /L /C:"test info" %folder%\asapo.*.log || goto :error
+findstr /I /L /C:"test error" %folder%\asapo.*.log || goto :error
+findstr /I /L /C:"test debug" %folder%\asapo.*.log || goto :error
+findstr /I /L /C:"test warning" %folder%\asapo.*.log || goto :error
 
 
 goto :clean
diff --git a/tests/automatic/spd_logger/fluentd/spd_logger_fluentd.cpp b/tests/automatic/spd_logger/fluentd/spd_logger_fluentd.cpp
index 4a3aa1d57..5207c6d6a 100644
--- a/tests/automatic/spd_logger/fluentd/spd_logger_fluentd.cpp
+++ b/tests/automatic/spd_logger/fluentd/spd_logger_fluentd.cpp
@@ -11,10 +11,10 @@ int main(int argc, char* argv[]) {
 
     logger->SetLogLevel(LogLevel::Debug);
 
-    logger->Info("test_info");
-    logger->Error("test_error");
-    logger->Warning("test_warning");
-    logger->Debug("test_debug");
+    logger->Info("test info");
+    logger->Error("test error");
+    logger->Warning("test warning");
+    logger->Debug("test debug");
 
     return 0;
 }
-- 
GitLab