1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-07-28 20:02:00 +03:00

Debug log level implementation

Debug log will now filter output based on debug level that is enabled.
This commit is contained in:
mkaruza
2019-02-12 10:44:26 +01:00
committed by Teemu Ollakka
parent 510c7f767f
commit be98517cb3
9 changed files with 131 additions and 74 deletions

View File

@ -674,7 +674,7 @@ namespace wsrep
int debug_log_level() const
{
return std::max(debug_log_level_,
server_state_.debug_log_level());
wsrep::log::debug_log_level());
}
//

View File

@ -25,6 +25,12 @@
#include <iosfwd>
#include <sstream>
#include <atomic>
#define WSREP_LOG_DEBUG(debug_level_fn, debug_level, msg) \
do { \
if (debug_level_fn >= debug_level) wsrep::log_debug() << msg; \
} while (0)
namespace wsrep
{
@ -39,6 +45,14 @@ namespace wsrep
error
};
enum debug_level
{
debug_level_server_state = 1,
debug_level_transaction,
debug_level_streaming,
debug_level_client_state
};
/**
* Signature for user defined logger callback function.
*/
@ -85,6 +99,17 @@ namespace wsrep
* Set user defined logger callback function.
*/
static void logger_fn(logger_fn_type);
/**
* Set debug log level from client
*/
static void debug_log_level(int debug_level);
/**
* Get current debug log level
*/
static int debug_log_level();
private:
log(const log&);
log& operator=(const log&);
@ -94,6 +119,7 @@ namespace wsrep
static wsrep::mutex& mutex_;
static std::ostream& os_;
static logger_fn_type logger_fn_;
static std::atomic_int debug_log_level_;
};
class log_error : public log

View File

@ -87,6 +87,7 @@
#include "id.hpp"
#include "view.hpp"
#include "transaction_id.hpp"
#include "logger.hpp"
#include "provider.hpp"
#include "compiler.hpp"
@ -542,17 +543,10 @@ namespace wsrep
* - 0 - No debug logging.
* - 1..n - Debug logging with increasing verbosity.
*/
void debug_log_level(int level) { debug_log_level_ = level; }
/**
*
*/
int debug_log_level() const { return debug_log_level_; }
/**
* @todo Set filter for debug logging.
*/
void debug_log_filter(const std::string&);
void debug_log_level(int level)
{
wsrep::log::debug_log_level(level);
}
wsrep::mutex& mutex() { return mutex_; }
@ -611,7 +605,6 @@ namespace wsrep
, connected_gtid_()
, current_view_()
, last_committed_gtid_()
, debug_log_level_(0)
{ }
private:
@ -701,7 +694,6 @@ namespace wsrep
wsrep::gtid connected_gtid_;
wsrep::view current_view_;
wsrep::gtid last_committed_gtid_;
int debug_log_level_;
};

View File

@ -62,12 +62,16 @@ namespace wsrep
{
if (fragment_size)
{
wsrep::log_debug() << "Enabling streaming: "
<< fragment_unit << " " << fragment_size;
WSREP_LOG_DEBUG(wsrep::log::debug_log_level(),
wsrep::log::debug_level_streaming,
"Enabling streaming: "
<< fragment_unit << " " << fragment_size);
}
else
{
wsrep::log_debug() << "Disabling streaming";
WSREP_LOG_DEBUG(wsrep::log::debug_log_level(),
wsrep::log::debug_level_streaming,
"Disabling streaming");
}
fragment_unit_ = fragment_unit;
fragment_size_ = fragment_size;
@ -76,8 +80,10 @@ namespace wsrep
void enable(enum fragment_unit fragment_unit, size_t fragment_size)
{
wsrep::log_debug() << "Enabling streaming: "
<< fragment_unit << " " << fragment_size;
WSREP_LOG_DEBUG(wsrep::log::debug_log_level(),
wsrep::log::debug_level_streaming,
"Enabling streaming: "
<< fragment_unit << " " << fragment_size);
assert(fragment_size > 0);
fragment_unit_ = fragment_unit;
fragment_size_ = fragment_size;
@ -89,7 +95,9 @@ namespace wsrep
void disable()
{
wsrep::log_debug() << "Disabling streaming";
WSREP_LOG_DEBUG(wsrep::log::debug_log_level(),
wsrep::log::debug_level_streaming,
"Disabling streaming");
fragment_size_ = 0;
}