瀏覽代碼

Acquire c_logger

Sam Jaffe 6 年之前
父節點
當前提交
f5c07a9387
共有 6 個文件被更改,包括 32 次插入11 次删除
  1. 0 1
      include/logger/c_logger.h
  2. 4 1
      include/logger/log_manager.h
  3. 0 2
      logger.xcodeproj/project.pbxproj
  4. 8 0
      src/common.cxx
  5. 2 1
      src/common.h
  6. 18 6
      src/log_manager.cxx

+ 0 - 1
include/logger/c_logger.h

@@ -27,7 +27,6 @@
 
 namespace logging {
   class logger_impl;
-  std::string timestamp();
   
   class c_logger {
   public:

+ 4 - 1
include/logger/log_manager.h

@@ -15,6 +15,7 @@ namespace objects { namespace prototype {
 } }
 
 namespace logging {
+  class c_logger;
   class logger;
   class logger_impl;
   
@@ -24,7 +25,9 @@ namespace logging {
     
     logger get();
     logger get(std::string const & name);
-    
+    c_logger c_get();
+    c_logger c_get(std::string const & name);
+
     void configure();
     
   private:

+ 0 - 2
logger.xcodeproj/project.pbxproj

@@ -12,7 +12,6 @@
 		CD6F73EC225187BE0081ED74 /* logger in Headers */ = {isa = PBXBuildFile; fileRef = CD6F73EA225187A10081ED74 /* logger */; settings = {ATTRIBUTES = (Public, ); }; };
 		CD6F7406225187F40081ED74 /* liblogging.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0ECAC4AF1BC00AC500FDAE14 /* liblogging.dylib */; };
 		CD6F740C225187FD0081ED74 /* logger_test.cxx in Sources */ = {isa = PBXBuildFile; fileRef = CD6F73FC225187E10081ED74 /* logger_test.cxx */; };
-		CD6F742E225189290081ED74 /* libcfmt_logger.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CD6F742D225189290081ED74 /* libcfmt_logger.dylib */; };
 		CD6F746C22518A2C0081ED74 /* GoogleMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD6F746B22518A2C0081ED74 /* GoogleMock.framework */; };
 		CD88E9572252BDFC00927F40 /* log_manager.cxx in Sources */ = {isa = PBXBuildFile; fileRef = CD88E9552252BDFC00927F40 /* log_manager.cxx */; };
 		CD88E95F2252D3EF00927F40 /* c_logger.cxx in Sources */ = {isa = PBXBuildFile; fileRef = CD88E95D2252D3EF00927F40 /* c_logger.cxx */; };
@@ -80,7 +79,6 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				CD6F742E225189290081ED74 /* libcfmt_logger.dylib in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

+ 8 - 0
src/common.cxx

@@ -8,6 +8,7 @@
 #include "common.h"
 
 #include <cassert>
+#include <ctime>
 
 #define X(l)          \
   case logging::L##l: \
@@ -32,3 +33,10 @@ timeval logging::now() {
   gettimeofday( &tv, nullptr );
   return tv;
 }
+
+std::string logging::timestamp() {
+  time_t round = std::time(NULL);
+  char buf[32];
+  std::strftime(buf, sizeof(buf), "%Y%m%dT%H%M%S", std::localtime(&round));
+  return buf;
+}

+ 2 - 1
src/common.h

@@ -14,7 +14,8 @@
 namespace logging {
   const char* level_header(log_level l);
   timeval now();
-  
+  std::string timestamp();
+
   std::ostream & operator<<(std::ostream & os, log_level l) {
     return os << std::string(level_header(l));
   }

+ 18 - 6
src/log_manager.cxx

@@ -10,6 +10,7 @@
 #include <memory>
 #include <unordered_map>
 
+#include "logger/c_logger.h"
 #include "logger/logger.h"
 #include "../../../types/resource_factory/include/resource_factory/prototype_factory.hpp"
 
@@ -18,6 +19,15 @@ INSTANTIATE_PROTOTYPE_FACTORY_2(logging::impl_factory);
 using namespace logging;
 
 struct logging::manager_impl {
+  std::shared_ptr<logger_impl> get(std::string const & name) {
+    auto it = loggers.find(name);
+    if (it == loggers.end()) {
+      auto & factory = impl_factory::instance();
+      it = loggers.emplace(name, factory.get(name)).first;
+    }
+    return it->second;
+  }
+  
   std::shared_ptr<logger_impl> default_logger;
   std::unordered_map<std::string, std::shared_ptr<logger_impl>> loggers;
 };
@@ -29,11 +39,13 @@ logger manager::get() {
 }
 
 logger manager::get(std::string const & name) {
-  auto it = pimpl->loggers.find(name);
-  if (it == pimpl->loggers.end()) {
-    auto & factory = impl_factory::instance();
-    it = pimpl->loggers.emplace(name, factory.get(name)).first;
-  }
-  return logger(name, it->second);
+  return logger(name, pimpl->get(name));
 }
 
+c_logger manager::c_get() {
+  return c_logger("", pimpl->default_logger);
+}
+
+c_logger manager::c_get(std::string const & name) {
+  return c_logger(name, pimpl->get(name));
+}