45e855f89d
I can't maintain anymore this amount of features while keeping the library constantly updated and without bugs. Every merge was taking me multiple hours of revisioning the code. I give up. From this commit onwards TDLight will only have small useful customizations that are easy to maintain. Now the people relying on the OptimizeMemory method can restart the session every N hours to free up the memory. The real way to keep a low memory usage must involve a huge refactoring to allow the unloading of the caches into the sqlite database, similar to what's already happening with messages data. Only Levlam has the ability to implement this without needing to merge the upstream everytime.
87 lines
3.7 KiB
C++
87 lines
3.7 KiB
C++
//
|
|
// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2021
|
|
//
|
|
// 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.
|
|
* These functions are deprecated since TDLib 1.4.0 in favor of the td::td_api::setLogVerbosityLevel,
|
|
* td::td_api::setLogStream and other synchronous requests for managing the internal TDLib logging.
|
|
*/
|
|
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.
|
|
*
|
|
* \deprecated Use synchronous td::td_api::setLogStream request 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 the 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.
|
|
*
|
|
* \deprecated Use synchronous td::td_api::setLogStream request instead.
|
|
* \param[in] max_file_size The 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.
|
|
*
|
|
* \deprecated Use synchronous td::td_api::setLogVerbosityLevel request instead.
|
|
* \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.
|
|
*
|
|
* \deprecated Use ClientManager::set_log_message_callback instead.
|
|
* \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
|