Program Listing for File Logger.hpp

Return to documentation for file (umpire/util/Logger.hpp)

//////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2016-20, Lawrence Livermore National Security, LLC and Umpire
// project contributors. See the COPYRIGHT file for details.
//
// SPDX-License-Identifier: (MIT)
//////////////////////////////////////////////////////////////////////////////
#ifndef UMPIRE_Logger_HPP
#define UMPIRE_Logger_HPP

#include <string>

namespace umpire {
namespace util {

namespace message {
enum Level {
  Error,
  Warning,
  Info,
  Debug,

  Num_Levels
};
} // end namespace message

class Logger {
  public:

  void setLoggingMsgLevel(message::Level level) noexcept;

  void logMessage(message::Level level,
                  const std::string& message,
                  const std::string& fileName,
                  int line) noexcept;

  static void initialize();

  static void finalize();

  static Logger* getActiveLogger();

  inline bool logLevelEnabled(message::Level level)
  {
    if ( level < 0 || level >= message::Num_Levels || m_is_enabled[ level ] == false  )
      return false;
    else
      return true;
  };

  ~Logger() noexcept = default;
  Logger(const Logger&) = delete;
  Logger& operator=(const Logger&) = delete;

private:
  Logger() noexcept;

  bool m_is_enabled[message::Num_Levels];
};

} // end namespace util
} // end namespace umpire

#endif // UMPIRE_Logger_HPP