mirror of
				https://github.com/eclipse/upm.git
				synced 2025-11-04 00:54:21 +03:00 
			
		
		
		
	added useful macro for logger
This commit is contained in:
		
				
					committed by
					
						
						Stefan Andritoiu
					
				
			
			
				
	
			
			
			
						parent
						
							e3f1533652
						
					
				
				
					commit
					9d6944f9b8
				
			@@ -5,12 +5,12 @@ using namespace upm;
 | 
				
			|||||||
int main()
 | 
					int main()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UPM_LOGGER::getLogLevel() = LOG_ERROR;
 | 
					  UPM_LOGGER::LogLevel() = LOG_INFO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UPM_LOGGER().get(LOG_WARNING) << "a loop with 4 iterations";
 | 
					  UPM_LOG(LOG_WARNING) << "a loop with 4 iterations";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (int i = 0; i < 4; ++i) {
 | 
					  for (int i = 0; i < 4; ++i) {
 | 
				
			||||||
    UPM_LOGGER().get(LOG_DEBUG) << "i = " << i;
 | 
					    UPM_LOG(LOG_DEBUG) << "i = " << i;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,13 @@
 | 
				
			|||||||
#include <chrono>
 | 
					#include <chrono>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Helper macro for logger utility class. */
 | 
				
			||||||
 | 
					#define UPM_LOG(log_level) \
 | 
				
			||||||
 | 
					  if ( log_level < UPM_LOGGER::LogLevel() ) \
 | 
				
			||||||
 | 
					    ; \
 | 
				
			||||||
 | 
					  else \
 | 
				
			||||||
 | 
					    UPM_LOGGER().log(log_level)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace upm {
 | 
					namespace upm {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  enum UpmLogLevel {
 | 
					  enum UpmLogLevel {
 | 
				
			||||||
@@ -27,14 +34,15 @@ namespace upm {
 | 
				
			|||||||
  public:
 | 
					  public:
 | 
				
			||||||
    UPM_LOGGER();
 | 
					    UPM_LOGGER();
 | 
				
			||||||
    virtual ~UPM_LOGGER();
 | 
					    virtual ~UPM_LOGGER();
 | 
				
			||||||
    std::ostringstream& get(UpmLogLevel level = LOG_INFO);
 | 
					    std::ostringstream& log(UpmLogLevel level = LOG_ERROR);
 | 
				
			||||||
    static UpmLogLevel& getLogLevel();
 | 
					    static UpmLogLevel& LogLevel();
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
    std::ostringstream os;
 | 
					    std::ostringstream os;
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
    UPM_LOGGER(const UPM_LOGGER&);
 | 
					    UPM_LOGGER(const UPM_LOGGER&);
 | 
				
			||||||
    UPM_LOGGER& operator=(const UPM_LOGGER&);
 | 
					    UPM_LOGGER& operator=(const UPM_LOGGER&);
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
 | 
					    // Track logLevel for this particular instance of UPM_LOGGER
 | 
				
			||||||
    UpmLogLevel logLevel;
 | 
					    UpmLogLevel logLevel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
@@ -51,20 +59,22 @@ namespace upm {
 | 
				
			|||||||
  UPM_LOGGER::UPM_LOGGER() {}
 | 
					  UPM_LOGGER::UPM_LOGGER() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  UpmLogLevel& UPM_LOGGER::getLogLevel()
 | 
					  UpmLogLevel& UPM_LOGGER::LogLevel()
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    static UpmLogLevel reportingLevel = LOG_DEBUG;
 | 
					    static UpmLogLevel reportingLevel = LOG_DEBUG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return reportingLevel;
 | 
					    return reportingLevel;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  std::ostringstream& UPM_LOGGER::get(UpmLogLevel level)
 | 
					  std::ostringstream& UPM_LOGGER::log(UpmLogLevel level)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    using namespace std::chrono;
 | 
					    using namespace std::chrono;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    os << "- " << duration_cast<milliseconds>
 | 
					    os << "UPM - " << duration_cast<milliseconds>
 | 
				
			||||||
      (system_clock::now().time_since_epoch()).count();
 | 
					      (system_clock::now().time_since_epoch()).count();
 | 
				
			||||||
    os << " " << getLogLevelName(level) << ": ";
 | 
					    os << " " << getLogLevelName(level) << ": ";
 | 
				
			||||||
    os << std::string(level > LOG_DEBUG ? level - LOG_DEBUG : 0, '\t');
 | 
					    os << std::string(level > LOG_DEBUG ? level - LOG_DEBUG : 0, '\t');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logLevel = level;
 | 
					    logLevel = level;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return os;
 | 
					    return os;
 | 
				
			||||||
@@ -72,13 +82,8 @@ namespace upm {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  UPM_LOGGER::~UPM_LOGGER()
 | 
					  UPM_LOGGER::~UPM_LOGGER()
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    if (logLevel >= UPM_LOGGER::getLogLevel()) {
 | 
					 | 
				
			||||||
    os << std::endl;
 | 
					    os << std::endl;
 | 
				
			||||||
    fprintf(stderr, "%s", os.str().c_str());
 | 
					    fprintf(stderr, "%s", os.str().c_str());
 | 
				
			||||||
    fflush(stderr);
 | 
					    fflush(stderr);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user