You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by is...@apache.org on 2022/09/09 20:00:55 UTC

[ignite-3] 14/17: IGNITE-17424 Add logging support

This is an automated email from the ASF dual-hosted git repository.

isapego pushed a commit to branch ignite-17424
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 04b98b5d7afb08e3a1b4b1cf1894df0a819fd8cc
Author: Igor Sapego <is...@apache.org>
AuthorDate: Wed Aug 31 12:36:00 2022 +0400

    IGNITE-17424 Add logging support
---
 .../include/ignite/ignite_client_configuration.h   | 31 +++++++++-
 .../cpp/client/include/ignite/ignite_logger.h      | 72 ++++++++++++++++++++++
 2 files changed, 102 insertions(+), 1 deletion(-)

diff --git a/modules/platforms/cpp/client/include/ignite/ignite_client_configuration.h b/modules/platforms/cpp/client/include/ignite/ignite_client_configuration.h
index 3212a0e9cf..e0073b6641 100644
--- a/modules/platforms/cpp/client/include/ignite/ignite_client_configuration.h
+++ b/modules/platforms/cpp/client/include/ignite/ignite_client_configuration.h
@@ -21,6 +21,8 @@
 #include <string>
 #include <vector>
 
+#include <ignite/ignite_logger.h>
+
 namespace ignite
 {
 
@@ -49,7 +51,8 @@ public:
      * @param endpoint Endpoints list.
      */
     IgniteClientConfiguration(std::initializer_list<std::string> endpoints) :
-        m_endpoints(endpoints) { }
+        m_endpoints(endpoints),
+        m_logger() { }
 
     /**
      * Get endpoints.
@@ -83,9 +86,35 @@ public:
         IgniteClientConfiguration::m_endpoints = endpoints;
     }
 
+    /**
+     * Get logger.
+     *
+     * @return Current logger.
+     */
+    [[nodiscard]]
+    std::shared_ptr<IgniteLogger> getLogger() const
+    {
+        return m_logger;
+    }
+
+    /**
+     * Set logger to be used by client.
+     *
+     * The logger is @c nullptr by default, which means no logging is performed.
+     *
+     * @param logger Logger to use.
+     */
+    void setLogger(std::shared_ptr<IgniteLogger> logger)
+    {
+        m_logger = std::move(logger);
+    }
+
 private:
     /** Endpoints. */
     std::vector<std::string> m_endpoints;
+
+    /** Logger. */
+    std::shared_ptr<IgniteLogger> m_logger;
 };
 
 } // namespace ignite
\ No newline at end of file
diff --git a/modules/platforms/cpp/client/include/ignite/ignite_logger.h b/modules/platforms/cpp/client/include/ignite/ignite_logger.h
new file mode 100644
index 0000000000..f274775ace
--- /dev/null
+++ b/modules/platforms/cpp/client/include/ignite/ignite_logger.h
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <string_view>
+
+namespace ignite
+{
+
+/**
+ * Ignite logger interface.
+ *
+ * User can implement this class to use preferred logger with Ignite client.
+ */
+class IgniteLogger
+{
+public:
+    // Default
+    IgniteLogger() = default;
+    ~IgniteLogger() = default;
+    IgniteLogger(IgniteLogger&&) = default;
+    IgniteLogger(const IgniteLogger&) = default;
+    IgniteLogger& operator=(IgniteLogger&&) = default;
+    IgniteLogger& operator=(const IgniteLogger&) = default;
+
+    /**
+     * Used to log error messages.
+     *
+     * @param message Error message.
+     */
+    virtual void logError(std::string_view message) = 0;
+
+    /**
+     * Used to log warning messages.
+     *
+     * @param message Warning message.
+     */
+    virtual void logWarning(std::string_view message) = 0;
+
+    /**
+     * Used to log info messages.
+     *
+     * @param message Info message.
+     */
+    virtual void logInfo(std::string_view message) = 0;
+
+    /**
+     * Used to log debug messages.
+     *
+     * It is recommended to disable debug logging by default for the sake of performance.
+     *
+     * @param message Debug message.
+     */
+    virtual void logDebug(std::string_view message) = 0;
+};
+
+} // namespace ignite
\ No newline at end of file