]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
log: logclient uses log types instead of log level
authorYehuda Sadeh <yehuda@hq.newdream.net>
Thu, 4 Dec 2008 18:47:35 +0000 (10:47 -0800)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Thu, 4 Dec 2008 18:48:17 +0000 (10:48 -0800)
src/common/LogClient.cc
src/common/LogClient.h
src/include/LogEntry.h
src/mon/LogMonitor.cc
src/osd/PG.cc
src/osd/ReplicatedPG.cc

index f7f428df059e776261309cb768a49f3889eff402..f4f043b18db787286a195f6f94e085b525c86288 100644 (file)
@@ -20,6 +20,7 @@
 #include "msg/Message.h"
 
 #include "messages/MLog.h"
+#include "mon/MonMap.h"
 
 #include <iostream>
 #include <errno.h>
 
 #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);
 }
index 13cd9933b51866a0d0f13542dc3fb5d3493e8fec..084ec5eae9d2114fd451dde07f10f2bc8b35ee40 100644 (file)
 #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 <map>
-using namespace std;
-
-#include <ext/hash_map>
-#include <ext/hash_set>
-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<LogEntry> 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);
 
index 8c5bb8ade7e305c83d52b923aa89f93a3f73b354..6442356954787649cc516767f93d7b901d60a7c8 100644 (file)
 #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
index a07cb22267698251d6d4716a8dba7ae9e56a2c67..87bd37ff93cefeaea7b25f56589c0706e87f497a 100644 (file)
@@ -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;
index 07b5cd2cce49c3d12fc16a3fbaa3a91c2acc7e6a..efb9b1b9ee915aada6d3261ffb76c72420007607 100644 (file)
@@ -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.
index d102f0eaeb9a713abb6b4924f6e3dac734244819..32379826c42e8eef0a45c04ed00920a994c58f9f 100644 (file)
@@ -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;