summaryrefslogtreecommitdiff
path: root/libs/tdlib/td/td/telegram/Log.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/tdlib/td/td/telegram/Log.h')
-rw-r--r--libs/tdlib/td/td/telegram/Log.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/libs/tdlib/td/td/telegram/Log.h b/libs/tdlib/td/td/telegram/Log.h
new file mode 100644
index 0000000000..7d5e0f4345
--- /dev/null
+++ b/libs/tdlib/td/td/telegram/Log.h
@@ -0,0 +1,80 @@
+//
+// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2018
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+#pragma once
+
+/**
+ * \file
+ * C++ interface for managing the internal logging of TDLib.
+ * By default TDLib writes logs to stderr or an OS specific log and uses a verbosity level of 5.
+ */
+
+#include <cstdint>
+#include <string>
+
+namespace td {
+
+/**
+ * Interface for managing the internal logging of TDLib.
+ * By default TDLib writes logs to stderr or an OS specific log and uses a verbosity level of 5.
+ */
+class Log {
+ public:
+ /**
+ * Sets the path to the file to where the internal TDLib log will be written.
+ * By default TDLib writes logs to stderr or an OS specific log.
+ * Use this method to write the log to a file instead.
+ *
+ * \param[in] file_path Path to a file where the internal TDLib log will be written. Use an empty path to
+ * switch back to the default logging behaviour.
+ * \return True on success, or false otherwise, i.e. if the file can't be opened for writing.
+ */
+ static bool set_file_path(std::string file_path);
+
+ /**
+ * Sets maximum size of the file to where the internal TDLib log is written before the file will be auto-rotated.
+ * Unused if log is not written to a file. Defaults to 10 MB.
+ *
+ * \param[in] max_file_size Maximum size of the file to where the internal TDLib log is written before the file
+ * will be auto-rotated. Should be positive.
+ */
+ static void set_max_file_size(std::int64_t max_file_size);
+
+ /**
+ * Sets the verbosity level of the internal logging of TDLib.
+ * By default the TDLib uses a verbosity level of 5 for logging.
+ *
+ * \param[in] new_verbosity_level New value of the verbosity level for logging.
+ * Value 0 corresponds to fatal errors,
+ * value 1 corresponds to errors,
+ * value 2 corresponds to warnings and debug warnings,
+ * value 3 corresponds to informational,
+ * value 4 corresponds to debug,
+ * value 5 corresponds to verbose debug,
+ * value greater than 5 and up to 1024 can be used to enable even more logging.
+ */
+ static void set_verbosity_level(int new_verbosity_level);
+
+ /**
+ * A type of callback function that will be called when a fatal error happens.
+ *
+ * \param error_message Null-terminated string with a description of a happened fatal error.
+ */
+ using FatalErrorCallbackPtr = void (*)(const char *error_message);
+
+ /**
+ * Sets the callback that will be called when a fatal error happens.
+ * None of the TDLib methods can be called from the callback.
+ * The TDLib will crash as soon as callback returns.
+ * By default the callback is not set.
+ *
+ * \param[in] callback Callback that will be called when a fatal error happens.
+ * Pass nullptr to remove the callback.
+ */
+ static void set_fatal_error_callback(FatalErrorCallbackPtr callback);
+};
+
+} // namespace td