Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/log.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/log.hpp	(revision 2340)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/log.hpp	(revision 2341)
@@ -5,4 +5,5 @@
 #include <iostream>
 #include <string>
+#include "log_type.hpp"
 
 namespace xios
@@ -25,8 +26,22 @@
       return *this;
     }
+
+    CLog& operator()(CLogType& logType)
+    {
+      if (logSetting==nullptr) setLogSetting() ;
+      if (logSetting->isSet(logType))
+      {
+        rdbuf(strBuf_);
+        *this<<"-> "<<name<<" : " ;
+      }
+      else rdbuf(NULL) ;
+      return *this;
+    }
+       
     void setLevel(int l) {level=l; }
     int getLevel() {return level ;}
     bool isActive(void) { if (rdbuf()==NULL) return true ; else return false ;}
     bool isActive(int l) {if (l<=level) return true ; else return false ; }
+    bool isActive(CLogType& logType) {if (logSetting==nullptr) setLogSetting() ; if (logSetting->isSet(logType)) return true; else return false; }
 
   public:
@@ -51,4 +66,8 @@
     string name ;
     std::streambuf* strBuf_;
+    
+    void setLogSetting(void) {logSetting = new CSetLog ;}
+
+    CSetLog* logSetting = nullptr ;
   };
 
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/log_type.cpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/log_type.cpp	(revision 2341)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/log_type.cpp	(revision 2341)
@@ -0,0 +1,54 @@
+#include "log_type.hpp"
+#include "cxios.hpp"
+
+namespace xios
+{
+  using namespace std ;
+  
+  int CLogType::globalBitPos_ = 0 ;
+
+  CLogType::CLogType(const std::string& name)
+  {
+    bitPos_ = CSetLog::registerLog(name, globalBitPos_) ;
+    if (bitPos_==-1) 
+    {  
+       bitPos_ = globalBitPos_ ;
+       globalBitPos_++ ;
+       if (globalBitPos_>63) ERROR("CLogType::CLogType(const std::string& name)",<<"max registred Log must be <64, need to modify CLogTyPe class algorithm") ;
+    }
+    type_ = (uint64_t)1 << bitPos_ ;
+  }
+
+  CSetLog::CSetLog(void)
+  {
+    std::string strIds = CXios::getin<std::string>("log_type","") ;
+    std::vector<std::string> names = splitRegex(strIds,"\\s* \\s*") ;
+    
+    auto& registredLog=getRegistredLog() ;
+
+    for(auto& name : names) 
+    {
+      auto it = registredLog.find(name) ;
+      if (it != registredLog.end()) CLogType::bitSet(logType_, it->second) ;
+    }
+  }
+
+  int CSetLog::registerLog(const std::string& name, int bitPos) 
+  { 
+    auto& registredLog = getRegistredLog() ;
+    auto it = registredLog.find(name) ;
+    if (it == registredLog.end()) 
+    {
+      registredLog.insert(pair<string, int>(name, bitPos)) ;
+      return -1 ;
+    }
+    else return it->second ;
+  }
+  
+  std::map<std::string, int>& CSetLog::getRegistredLog(void)
+  {
+    static std::map<std::string, int> registredLog ;
+    return registredLog ;
+  }
+
+}
Index: XIOS/dev/dev_ym/XIOS_COUPLING/src/log_type.hpp
===================================================================
--- XIOS/dev/dev_ym/XIOS_COUPLING/src/log_type.hpp	(revision 2341)
+++ XIOS/dev/dev_ym/XIOS_COUPLING/src/log_type.hpp	(revision 2341)
@@ -0,0 +1,54 @@
+#ifndef __XIOS_LOG_TYPE_HPP__
+#define __XIOS_LOG_TYPE_HPP__
+
+#include <string>
+#include <iostream>
+#include <cstdint>
+#include <unordered_map>
+
+//#include "cxios.hpp"
+#include "string_tools.hpp"
+
+namespace xios
+{
+  class CSetLog ;
+
+  class CLogType
+  {
+    public: 
+
+    CLogType(void) {}
+    CLogType(const std::string& name) ;
+
+    static void bitSet(CLogType& log, int bitPos) { log.type_ |= (uint64_t)1 << bitPos ;}
+    static bool bitAnd(CLogType& log1, CLogType& log2) { return (log1.type_ & log2.type_) == log2.type_ ; }
+    
+    private:
+    
+    uint64_t type_=0 ;
+    int bitPos_=0 ;
+    static int globalBitPos_ ;
+    
+  } ;
+
+  class CSetLog
+  {
+    public:
+
+    CSetLog(void) ;
+    bool isSet(CLogType& log) { return CLogType::bitAnd(logType_, log) ; }
+
+    private:
+    
+    static int registerLog(const std::string& name, int bitPos) ;
+    static std::map<std::string, int>& getRegistredLog(void) ;
+    
+    CLogType logType_ ;
+    friend class CLogType ;
+  } ;
+
+
+
+}
+
+#endif
