From 358db6626340cad9a9eb9bb17c228cf70e549302 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Thu, 4 Dec 2008 10:47:35 -0800 Subject: [PATCH] log: logclient uses log types instead of log level --- src/common/LogClient.cc | 8 ++++---- src/common/LogClient.h | 27 +++------------------------ src/include/LogEntry.h | 34 ++++++++++++++++++++++++++++++---- src/mon/LogMonitor.cc | 2 +- src/osd/PG.cc | 2 +- src/osd/ReplicatedPG.cc | 2 +- 6 files changed, 40 insertions(+), 35 deletions(-) diff --git a/src/common/LogClient.cc b/src/common/LogClient.cc index f7f428df059e7..f4f043b18db78 100644 --- a/src/common/LogClient.cc +++ b/src/common/LogClient.cc @@ -20,6 +20,7 @@ #include "msg/Message.h" #include "messages/MLog.h" +#include "mon/MonMap.h" #include #include @@ -32,18 +33,17 @@ #include "common/LogClient.h" - #include "config.h" -void LogClient::log(__u8 level, string s) +void LogClient::log(log_type type, string s) { Mutex::Locker l(log_lock); - dout(10) << "log " << (int)level << " : " << s << dendl; + dout(10) << "log " << (log_type)type << " : " << s << dendl; LogEntry e; e.who = messenger->get_myinst(); e.stamp = g_clock.now(); e.seq = ++last_log; - e.level = level; + e.type = type; e.msg = s; log_queue.push_back(e); } diff --git a/src/common/LogClient.h b/src/common/LogClient.h index 13cd9933b5186..084ec5eae9d21 100644 --- a/src/common/LogClient.h +++ b/src/common/LogClient.h @@ -18,33 +18,12 @@ #include "msg/Dispatcher.h" #include "common/Mutex.h" -#include "common/RWLock.h" -#include "common/ThreadPool.h" -#include "common/Timer.h" -#include "common/WorkQueue.h" - -#include "mon/MonMap.h" - -#include "os/ObjectStore.h" - -#include "common/DecayCounter.h" - #include "include/LogEntry.h" -#include -using namespace std; - -#include -#include -using namespace __gnu_cxx; - - class Messenger; -class Message; -class Logger; -class ObjectStore; -class OSDMap; class MLog; +class MonMap; + class LogClient { Messenger *messenger; @@ -56,7 +35,7 @@ class LogClient { deque log_queue; version_t last_log; - void log(__u8 level, string s); + void log(log_type type, string s); void send_log(); void handle_log(MLog *m); diff --git a/src/include/LogEntry.h b/src/include/LogEntry.h index 8c5bb8ade7e30..6442356954787 100644 --- a/src/include/LogEntry.h +++ b/src/include/LogEntry.h @@ -18,33 +18,59 @@ #include "include/types.h" #include "include/encoding.h" +typedef enum { + LOG_DEBUG = 0, + LOG_INFO = 1, + LOG_WARN = 2, + LOG_ERROR = 3, +} log_type; + struct LogEntry { entity_inst_t who; utime_t stamp; __u64 seq; - __u8 level; + log_type type; string msg; void encode(bufferlist& bl) const { + __u16 t = type; ::encode(who, bl); ::encode(stamp, bl); ::encode(seq, bl); - ::encode(level, bl); + ::encode(t, bl); ::encode(msg, bl); } void decode(bufferlist::iterator& bl) { + __u16 t; ::decode(who, bl); ::decode(stamp, bl); ::decode(seq, bl); - ::decode(level, bl); + ::decode(t, bl); + type = (log_type)t; ::decode(msg, bl); } }; WRITE_CLASS_ENCODER(LogEntry) +inline ostream& operator<<(ostream& out, const log_type& t) +{ + switch (t) { + case LOG_DEBUG: + return out << "[DBG]"; + case LOG_INFO: + return out << "[INF]"; + case LOG_WARN: + return out << "[WRN]"; + case LOG_ERROR: + return out << "[ERR]"; + default: + return out << "[???]"; + } +} + inline ostream& operator<<(ostream& out, const LogEntry& e) { - return out << e.stamp << " " << e.who << " : " << e.seq << " : " << (int)e.level << " : " << e.msg; + return out << e.stamp << " " << e.type << " " << e.who << " : " << e.seq << " : " << e.msg; } #endif diff --git a/src/mon/LogMonitor.cc b/src/mon/LogMonitor.cc index a07cb22267698..87bd37ff93cef 100644 --- a/src/mon/LogMonitor.cc +++ b/src/mon/LogMonitor.cc @@ -82,7 +82,7 @@ void LogMonitor::create_initial() LogEntry e; memset(&e.who, 0, sizeof(e.who)); e.stamp = g_clock.now(); - e.level = 0; + e.type = LOG_INFO; e.msg = "mkfs"; e.seq = 0; stringstream ss; diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 07b5cd2cce49c..efb9b1b9ee915 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1891,7 +1891,7 @@ void PG::scrub() ss << "scrub " << info.pgid << " " << num_missing << " missing, " << num_bad << " bad objects"; string s; getline(ss, s); - osd->get_logclient()->log(10, s); + osd->get_logclient()->log(LOG_ERROR, s); } // discard peer scrub info. diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index d102f0eaeb9a7..32379826c42e8 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -3027,7 +3027,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) << stat.num_kb << "/" << info.stats.num_kb << " kb."; string s; getline(ss, s); - osd->get_logclient()->log(10, s); + osd->get_logclient()->log(LOG_ERROR, s); /* } else { stringstream ss; -- 2.39.5