log: style
This commit is contained in:
parent
5d6586636e
commit
ea953ec024
29
log.cpp
29
log.cpp
@ -32,6 +32,8 @@ using namespace util;
|
|||||||
using std::string;
|
using std::string;
|
||||||
using std::map;
|
using std::map;
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
void
|
void
|
||||||
check_level (level_t l)
|
check_level (level_t l)
|
||||||
{
|
{
|
||||||
@ -39,6 +41,7 @@ check_level (level_t l)
|
|||||||
CHECK (l >= 0 && l < NUM_LEVELS);
|
CHECK (l >= 0 && l < NUM_LEVELS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
const string&
|
const string&
|
||||||
level_to_string (level_t l) {
|
level_to_string (level_t l) {
|
||||||
check_level (l);
|
check_level (l);
|
||||||
@ -58,6 +61,7 @@ level_to_string (level_t l) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
static level_t
|
static level_t
|
||||||
string_to_level (string name) {
|
string_to_level (string name) {
|
||||||
static const map <string, level_t> NAME_LEVELS = {
|
static const map <string, level_t> NAME_LEVELS = {
|
||||||
@ -83,6 +87,7 @@ string_to_level (string name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
std::ostream&
|
std::ostream&
|
||||||
util::operator<< (std::ostream& os, level_t l) {
|
util::operator<< (std::ostream& os, level_t l) {
|
||||||
os << level_to_string (l);
|
os << level_to_string (l);
|
||||||
@ -90,11 +95,7 @@ util::operator<< (std::ostream& os, level_t l) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
util::log (level_t l, const std::string &format)
|
|
||||||
{ detail::log (l, boost::format (format)); }
|
|
||||||
|
|
||||||
|
|
||||||
static level_t
|
static level_t
|
||||||
log_level (void) {
|
log_level (void) {
|
||||||
const char *env = getenv ("LOG_LEVEL");
|
const char *env = getenv ("LOG_LEVEL");
|
||||||
@ -109,6 +110,13 @@ log_level (void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
void
|
||||||
|
util::log (level_t l, const std::string &format)
|
||||||
|
{ detail::log (l, boost::format (format)); }
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------
|
||||||
void
|
void
|
||||||
util::detail::log (level_t level, boost::format &&format) {
|
util::detail::log (level_t level, boost::format &&format) {
|
||||||
static const level_t LOG_LEVEL = log_level ();
|
static const level_t LOG_LEVEL = log_level ();
|
||||||
@ -137,13 +145,16 @@ util::detail::log (level_t level, boost::format &&format) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
scoped_logger::scoped_logger (const level_t _level,
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
const std::string &_message):
|
scoped_logger::scoped_logger (level_t _level,
|
||||||
|
std::string &&_message):
|
||||||
m_level (_level),
|
m_level (_level),
|
||||||
m_message (_message)
|
m_message (std::move (_message))
|
||||||
{ ; }
|
{ ; }
|
||||||
|
|
||||||
|
|
||||||
scoped_logger::~scoped_logger () {
|
//-----------------------------------------------------------------------------
|
||||||
|
scoped_logger::~scoped_logger ()
|
||||||
|
{
|
||||||
log (m_level, m_message);
|
log (m_level, m_message);
|
||||||
}
|
}
|
||||||
|
20
log.hpp
20
log.hpp
@ -28,6 +28,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace util {
|
namespace util {
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
// rfc5424 log levels. It is assumed they are contiguous to simplify array
|
// rfc5424 log levels. It is assumed they are contiguous to simplify array
|
||||||
// indexing in logging code.
|
// indexing in logging code.
|
||||||
//
|
//
|
||||||
@ -47,14 +48,19 @@ namespace util {
|
|||||||
DEFAULT = INFO
|
DEFAULT = INFO
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
std::ostream&
|
std::ostream&
|
||||||
operator<< (std::ostream&, level_t);
|
operator<< (std::ostream&, level_t);
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
void log (level_t, const std::string &format);
|
void log (level_t, const std::string &format);
|
||||||
|
|
||||||
template <typename ...tail>
|
template <typename ...tail>
|
||||||
void log (level_t, const std::string &format, tail ..._tail);
|
void log (level_t, const std::string &format, tail ..._tail);
|
||||||
|
|
||||||
|
|
||||||
|
//-------------------------------------------------------------------------
|
||||||
#define LOG_EMERGENCY(...) do { util::log(util::EMERGENCY, ##__VA_ARGS__); } while (0)
|
#define LOG_EMERGENCY(...) do { util::log(util::EMERGENCY, ##__VA_ARGS__); } while (0)
|
||||||
#define LOG_ALERT(...) do { util::log(util::ALERT, ##__VA_ARGS__); } while (0)
|
#define LOG_ALERT(...) do { util::log(util::ALERT, ##__VA_ARGS__); } while (0)
|
||||||
#define LOG_CRITICAL(...) do { util::log(util::CRITICAL, ##__VA_ARGS__); } while (0)
|
#define LOG_CRITICAL(...) do { util::log(util::CRITICAL, ##__VA_ARGS__); } while (0)
|
||||||
@ -70,15 +76,17 @@ namespace util {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
class scoped_logger : public nocopy {
|
class scoped_logger : public nocopy {
|
||||||
public:
|
public:
|
||||||
scoped_logger (const level_t, const std::string&);
|
scoped_logger (const level_t, std::string&&);
|
||||||
~scoped_logger ();
|
~scoped_logger ();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const level_t m_level;
|
level_t m_level;
|
||||||
const std::string &m_message;
|
std::string m_message;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "log.ipp"
|
#include "log.ipp"
|
||||||
|
Loading…
Reference in New Issue
Block a user