Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
spdlog::logger Class Reference

#include <logger.h>

Inheritance diagram for spdlog::logger:
spdlog::async_logger

Public Member Functions

 logger (std::string name, sink_ptr single_sink)
 
 logger (std::string name, sinks_init_list sinks)
 
template<typename It >
 logger (std::string name, It begin, It end)
 
virtual ~logger ()
 
 logger (const logger &)=delete
 
loggeroperator= (const logger &)=delete
 
template<typename... Args>
void log (level::level_enum lvl, const char *fmt, const Args &...args)
 
template<typename... Args>
void log (source_loc loc, level::level_enum lvl, const char *fmt, const Args &...args)
 
void log (level::level_enum lvl, const char *msg)
 
void log (source_loc loc, level::level_enum lvl, const char *msg)
 
template<typename... Args>
void trace (const char *fmt, const Args &...args)
 
template<typename... Args>
void debug (const char *fmt, const Args &...args)
 
template<typename... Args>
void info (const char *fmt, const Args &...args)
 
template<typename... Args>
void warn (const char *fmt, const Args &...args)
 
template<typename... Args>
void error (const char *fmt, const Args &...args)
 
template<typename... Args>
void critical (const char *fmt, const Args &...args)
 
template<class T , typename std::enable_if< std::is_convertible< T, spdlog::string_view_t >::value, T >::type * = nullptr>
void log (level::level_enum lvl, const T &)
 
template<class T , typename std::enable_if< std::is_convertible< T, spdlog::string_view_t >::value, T >::type * = nullptr>
void log (source_loc loc, level::level_enum lvl, const T &)
 
template<class T , typename std::enable_if<!std::is_convertible< T, spdlog::string_view_t >::value, T >::type * = nullptr>
void log (level::level_enum lvl, const T &)
 
template<class T , typename std::enable_if<!std::is_convertible< T, spdlog::string_view_t >::value, T >::type * = nullptr>
void log (source_loc loc, level::level_enum lvl, const T &)
 
template<typename T >
void trace (const T &msg)
 
template<typename T >
void debug (const T &msg)
 
template<typename T >
void info (const T &msg)
 
template<typename T >
void warn (const T &msg)
 
template<typename T >
void error (const T &msg)
 
template<typename T >
void critical (const T &msg)
 
bool should_log (level::level_enum msg_level) const
 
void set_level (level::level_enum log_level)
 
level::level_enum level () const
 
const std::stringname () const
 
void set_formatter (std::unique_ptr< formatter > formatter)
 
void set_pattern (std::string pattern, pattern_time_type time_type=pattern_time_type::local)
 
void flush ()
 
void flush_on (level::level_enum log_level)
 
level::level_enum flush_level () const
 
const std::vector< sink_ptr > & sinks () const
 
std::vector< sink_ptr > & sinks ()
 
void set_error_handler (log_err_handler err_handler)
 
log_err_handler error_handler () const
 
virtual std::shared_ptr< loggerclone (std::string logger_name)
 

Static Public Member Functions

static level::level_enum default_level ()
 

Protected Member Functions

virtual void sink_it_ (details::log_msg &msg)
 
virtual void flush_ ()
 
bool should_flush_ (const details::log_msg &msg)
 
void default_err_handler_ (const std::string &msg)
 
void incr_msg_counter_ (details::log_msg &msg)
 

Protected Attributes

const std::string name_
 
std::vector< sink_ptrsinks_
 
spdlog::level_t level_ {spdlog::logger::default_level()}
 
spdlog::level_t flush_level_ {level::off}
 
log_err_handler err_handler_ {[this](const std::string &msg) { this->default_err_handler_(msg); }}
 
std::atomic< time_t > last_err_time_ {0}
 
std::atomic< size_t > msg_counter_ {1}
 

Detailed Description

Definition at line 31 of file logger.h.

Constructor & Destructor Documentation

spdlog::logger::logger ( std::string  name,
spdlog::sink_ptr  single_sink 
)
inline

Definition at line 39 of file logger_impl.h.

40  : logger(std::move(logger_name), {std::move(single_sink)})
41 {
42 }
def move(depos, offset)
Definition: depos.py:107
logger(std::string name, sink_ptr single_sink)
Definition: logger_impl.h:39
spdlog::logger::logger ( std::string  name,
sinks_init_list  sinks 
)
inline

Definition at line 33 of file logger_impl.h.

34  : logger(std::move(logger_name), sinks_list.begin(), sinks_list.end())
35 {
36 }
def move(depos, offset)
Definition: depos.py:107
logger(std::string name, sink_ptr single_sink)
Definition: logger_impl.h:39
template<typename It >
spdlog::logger::logger ( std::string  name,
It  begin,
It  end 
)
inline

Definition at line 26 of file logger_impl.h.

27  : name_(std::move(logger_name))
28  , sinks_(begin, end)
29 {
30 }
const std::string name_
Definition: logger.h:178
decltype(auto) constexpr end(T &&obj)
ADL-aware version of std::end.
Definition: StdUtils.h:72
std::vector< sink_ptr > sinks_
Definition: logger.h:179
def move(depos, offset)
Definition: depos.py:107
decltype(auto) constexpr begin(T &&obj)
ADL-aware version of std::begin.
Definition: StdUtils.h:67
spdlog::logger::~logger ( )
inlinevirtualdefault
spdlog::logger::logger ( const logger )
delete

Member Function Documentation

std::shared_ptr< spdlog::logger > spdlog::logger::clone ( std::string  logger_name)
inlinevirtual

Reimplemented in spdlog::async_logger.

Definition at line 434 of file logger_impl.h.

435 {
436  auto cloned = std::make_shared<spdlog::logger>(std::move(logger_name), sinks_.begin(), sinks_.end());
437  cloned->set_level(this->level());
438  cloned->flush_on(this->flush_level());
439  cloned->set_error_handler(this->error_handler());
440  return cloned;
441 }
level::level_enum flush_level() const
Definition: logger_impl.h:348
log_err_handler error_handler() const
Definition: logger_impl.h:329
std::vector< sink_ptr > sinks_
Definition: logger.h:179
def move(depos, offset)
Definition: depos.py:107
level::level_enum level() const
Definition: logger_impl.h:364
template<typename... Args>
void spdlog::logger::critical ( const char *  fmt,
const Args &...  args 
)
inline

Definition at line 181 of file logger_impl.h.

182 {
183  log(level::critical, fmt, args...);
184 }
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
static QCString args
Definition: declinfo.cpp:674
Definition: bin_to_hex.h:69
template<typename T>
void spdlog::logger::critical ( const T &  msg)
inline

Definition at line 217 of file logger_impl.h.

218 {
220 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
template<typename... Args>
void spdlog::logger::debug ( const char *  fmt,
const Args &...  args 
)
inline

Definition at line 157 of file logger_impl.h.

158 {
159  log(level::debug, fmt, args...);
160 }
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
static QCString args
Definition: declinfo.cpp:674
Definition: bin_to_hex.h:69
template<typename T>
void spdlog::logger::debug ( const T &  msg)
inline

Definition at line 193 of file logger_impl.h.

194 {
195  log(level::debug, msg);
196 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
void spdlog::logger::default_err_handler_ ( const std::string msg)
inlineprotected

Definition at line 405 of file logger_impl.h.

406 {
407  auto now = time(nullptr);
408  if (now - last_err_time_ < 60)
409  {
410  return;
411  }
413  auto tm_time = details::os::localtime(now);
414  char date_buf[100];
415  std::strftime(date_buf, sizeof(date_buf), "%Y-%m-%d %H:%M:%S", &tm_time);
416  fmt::print(stderr, "[*** LOG ERROR ***] [{}] [{}] {}\n", date_buf, name(), msg);
417 }
std::atomic< time_t > last_err_time_
Definition: logger.h:183
void msg(const char *fmt,...)
Definition: message.cpp:107
std::enable_if< internal::is_string< String >::value >::type print(std::FILE *f, const text_style &ts, const String &format_str, const Args &...args)
Definition: color.h:549
std::size_t strftime(char *str, std::size_t count, const char *format, const std::tm *time)
Definition: time.h:104
std::tm localtime(const std::time_t &time_tt) SPDLOG_NOEXCEPT
Definition: os.h:73
const std::string & name() const
Definition: logger_impl.h:314
spdlog::level::level_enum spdlog::logger::default_level ( )
inlinestatic

Definition at line 359 of file logger_impl.h.

360 {
361  return static_cast<spdlog::level::level_enum>(SPDLOG_ACTIVE_LEVEL);
362 }
#define SPDLOG_ACTIVE_LEVEL
Definition: common.h:106
template<typename... Args>
void spdlog::logger::error ( const char *  fmt,
const Args &...  args 
)
inline

Definition at line 175 of file logger_impl.h.

176 {
177  log(level::err, fmt, args...);
178 }
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
static QCString args
Definition: declinfo.cpp:674
Definition: bin_to_hex.h:69
template<typename T>
void spdlog::logger::error ( const T &  msg)
inline

Definition at line 211 of file logger_impl.h.

212 {
213  log(level::err, msg);
214 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
spdlog::log_err_handler spdlog::logger::error_handler ( ) const
inline

Definition at line 329 of file logger_impl.h.

330 {
331  return err_handler_;
332 }
log_err_handler err_handler_
Definition: logger.h:182
void spdlog::logger::flush ( )
inline

Definition at line 334 of file logger_impl.h.

335 {
336  try
337  {
338  flush_();
339  }
341 }
#define SPDLOG_CATCH_AND_HANDLE
Definition: logger_impl.h:13
virtual void flush_()
Definition: logger_impl.h:397
void spdlog::logger::flush_ ( )
inlineprotectedvirtual

Reimplemented in spdlog::async_logger.

Definition at line 397 of file logger_impl.h.

398 {
399  for (auto &sink : sinks_)
400  {
401  sink->flush();
402  }
403 }
std::vector< sink_ptr > sinks_
Definition: logger.h:179
spdlog::level::level_enum spdlog::logger::flush_level ( ) const
inline

Definition at line 348 of file logger_impl.h.

349 {
350  return static_cast<spdlog::level::level_enum>(flush_level_.load(std::memory_order_relaxed));
351 }
spdlog::level_t flush_level_
Definition: logger.h:181
void spdlog::logger::flush_on ( level::level_enum  log_level)
inline

Definition at line 343 of file logger_impl.h.

344 {
345  flush_level_.store(log_level);
346 }
spdlog::level_t flush_level_
Definition: logger.h:181
void spdlog::logger::incr_msg_counter_ ( details::log_msg msg)
inlineprotected

Definition at line 419 of file logger_impl.h.

420 {
421  msg.msg_id = msg_counter_.fetch_add(1, std::memory_order_relaxed);
422 }
void msg(const char *fmt,...)
Definition: message.cpp:107
std::atomic< size_t > msg_counter_
Definition: logger.h:184
template<typename... Args>
void spdlog::logger::info ( const char *  fmt,
const Args &...  args 
)
inline

Definition at line 163 of file logger_impl.h.

164 {
165  log(level::info, fmt, args...);
166 }
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
static QCString args
Definition: declinfo.cpp:674
Definition: bin_to_hex.h:69
template<typename T>
void spdlog::logger::info ( const T &  msg)
inline

Definition at line 199 of file logger_impl.h.

200 {
201  log(level::info, msg);
202 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
spdlog::level::level_enum spdlog::logger::level ( ) const
inline

Definition at line 364 of file logger_impl.h.

365 {
366  return static_cast<spdlog::level::level_enum>(level_.load(std::memory_order_relaxed));
367 }
spdlog::level_t level_
Definition: logger.h:180
template<typename... Args>
void spdlog::logger::log ( level::level_enum  lvl,
const char *  fmt,
const Args &...  args 
)
inline

Definition at line 80 of file logger_impl.h.

81 {
82  log(source_loc{}, lvl, fmt, args...);
83 }
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
static QCString args
Definition: declinfo.cpp:674
Definition: bin_to_hex.h:69
template<typename... Args>
void spdlog::logger::log ( source_loc  loc,
level::level_enum  lvl,
const char *  fmt,
const Args &...  args 
)
inline

Definition at line 61 of file logger_impl.h.

62 {
63  if (!should_log(lvl))
64  {
65  return;
66  }
67 
68  try
69  {
72  fmt::format_to(buf, fmt, args...);
73  details::log_msg log_msg(source, &name_, lvl, to_string_view(buf));
74  sink_it_(log_msg);
75  }
77 }
basic_memory_buffer< char > memory_buffer
Definition: format.h:553
#define SPDLOG_CATCH_AND_HANDLE
Definition: logger_impl.h:13
static QCString args
Definition: declinfo.cpp:674
const std::string name_
Definition: logger.h:178
std::enable_if< is_contiguous< Container >::value &&internal::is_string< S >::value, std::back_insert_iterator< Container > >::type format_to(std::back_insert_iterator< Container > out, const S &format_str, const Args &...args)
Definition: core.h:1430
string_view_t & to_string_view(spdlog::level::level_enum l) SPDLOG_NOEXCEPT
Definition: common.h:132
bool should_log(level::level_enum msg_level) const
Definition: logger_impl.h:369
Definition: bin_to_hex.h:69
spdlog::string_view_t to_string_view(const fmt::basic_memory_buffer< char, Buffer_Size > &buf) SPDLOG_NOEXCEPT
Definition: fmt_helper.h:17
virtual void sink_it_(details::log_msg &msg)
Definition: logger_impl.h:378
void spdlog::logger::log ( level::level_enum  lvl,
const char *  msg 
)
inline

Definition at line 100 of file logger_impl.h.

101 {
102  log(source_loc{}, lvl, msg);
103 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
void spdlog::logger::log ( source_loc  loc,
level::level_enum  lvl,
const char *  msg 
)
inline

Definition at line 85 of file logger_impl.h.

86 {
87  if (!should_log(lvl))
88  {
89  return;
90  }
91 
92  try
93  {
94  details::log_msg log_msg(source, &name_, lvl, spdlog::string_view_t(msg));
95  sink_it_(log_msg);
96  }
98 }
void msg(const char *fmt,...)
Definition: message.cpp:107
#define SPDLOG_CATCH_AND_HANDLE
Definition: logger_impl.h:13
const std::string name_
Definition: logger.h:178
bool should_log(level::level_enum msg_level) const
Definition: logger_impl.h:369
fmt::string_view string_view_t
Definition: common.h:88
virtual void sink_it_(details::log_msg &msg)
Definition: logger_impl.h:378
template<class T, typename std::enable_if<!std::is_convertible< T, spdlog::string_view_t >::value, T >::type * >
void spdlog::logger::log ( level::level_enum  lvl,
const T &  msg 
)
inline

Definition at line 121 of file logger_impl.h.

122 {
123  log(source_loc{}, lvl, msg);
124 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
template<class T, typename std::enable_if<!std::is_convertible< T, spdlog::string_view_t >::value, T >::type * >
void spdlog::logger::log ( source_loc  loc,
level::level_enum  lvl,
const T &  msg 
)
inline

Definition at line 106 of file logger_impl.h.

107 {
108  if (!should_log(lvl))
109  {
110  return;
111  }
112  try
113  {
114  details::log_msg log_msg(source, &name_, lvl, msg);
115  sink_it_(log_msg);
116  }
118 }
void msg(const char *fmt,...)
Definition: message.cpp:107
#define SPDLOG_CATCH_AND_HANDLE
Definition: logger_impl.h:13
const std::string name_
Definition: logger.h:178
bool should_log(level::level_enum msg_level) const
Definition: logger_impl.h:369
virtual void sink_it_(details::log_msg &msg)
Definition: logger_impl.h:378
template<class T , typename std::enable_if<!std::is_convertible< T, spdlog::string_view_t >::value, T >::type * = nullptr>
void spdlog::logger::log ( level::level_enum  lvl,
const T &   
)
template<class T , typename std::enable_if<!std::is_convertible< T, spdlog::string_view_t >::value, T >::type * = nullptr>
void spdlog::logger::log ( source_loc  loc,
level::level_enum  lvl,
const T &   
)
const std::string & spdlog::logger::name ( ) const
inline

Definition at line 314 of file logger_impl.h.

315 {
316  return name_;
317 }
const std::string name_
Definition: logger.h:178
logger& spdlog::logger::operator= ( const logger )
delete
void spdlog::logger::set_error_handler ( spdlog::log_err_handler  err_handler)
inline

Definition at line 324 of file logger_impl.h.

325 {
326  err_handler_ = std::move(err_handler);
327 }
log_err_handler err_handler_
Definition: logger.h:182
def move(depos, offset)
Definition: depos.py:107
void spdlog::logger::set_formatter ( std::unique_ptr< formatter formatter)
inline

Definition at line 46 of file logger_impl.h.

47 {
48  for (auto &sink : sinks_)
49  {
50  sink->set_formatter(f->clone());
51  }
52 }
std::vector< sink_ptr > sinks_
Definition: logger.h:179
void spdlog::logger::set_level ( level::level_enum  log_level)
inline

Definition at line 319 of file logger_impl.h.

320 {
321  level_.store(log_level);
322 }
spdlog::level_t level_
Definition: logger.h:180
void spdlog::logger::set_pattern ( std::string  pattern,
pattern_time_type  time_type = pattern_time_type::local 
)
inline

Definition at line 54 of file logger_impl.h.

55 {
56  auto new_formatter = details::make_unique<spdlog::pattern_formatter>(std::move(pattern), time_type);
57  set_formatter(std::move(new_formatter));
58 }
def move(depos, offset)
Definition: depos.py:107
void set_formatter(std::unique_ptr< formatter > formatter)
Definition: logger_impl.h:46
std::string pattern
Definition: regex_t.cc:33
bool spdlog::logger::should_flush_ ( const details::log_msg msg)
inlineprotected

Definition at line 353 of file logger_impl.h.

354 {
355  auto flush_level = flush_level_.load(std::memory_order_relaxed);
356  return (msg.level >= flush_level) && (msg.level != level::off);
357 }
level::level_enum flush_level() const
Definition: logger_impl.h:348
void msg(const char *fmt,...)
Definition: message.cpp:107
spdlog::level_t flush_level_
Definition: logger.h:181
bool spdlog::logger::should_log ( level::level_enum  msg_level) const
inline

Definition at line 369 of file logger_impl.h.

370 {
371  return msg_level >= level_.load(std::memory_order_relaxed);
372 }
spdlog::level_t level_
Definition: logger.h:180
void spdlog::logger::sink_it_ ( details::log_msg msg)
inlineprotectedvirtual

Reimplemented in spdlog::async_logger.

Definition at line 378 of file logger_impl.h.

379 {
380 #if defined(SPDLOG_ENABLE_MESSAGE_COUNTER)
382 #endif
383  for (auto &sink : sinks_)
384  {
385  if (sink->should_log(msg.level))
386  {
387  sink->log(msg);
388  }
389  }
390 
391  if (should_flush_(msg))
392  {
393  flush_();
394  }
395 }
void incr_msg_counter_(details::log_msg &msg)
Definition: logger_impl.h:419
void msg(const char *fmt,...)
Definition: message.cpp:107
std::vector< sink_ptr > sinks_
Definition: logger.h:179
bool should_flush_(const details::log_msg &msg)
Definition: logger_impl.h:353
virtual void flush_()
Definition: logger_impl.h:397
const std::vector< spdlog::sink_ptr > & spdlog::logger::sinks ( ) const
inline

Definition at line 424 of file logger_impl.h.

425 {
426  return sinks_;
427 }
std::vector< sink_ptr > sinks_
Definition: logger.h:179
std::vector< spdlog::sink_ptr > & spdlog::logger::sinks ( )
inline

Definition at line 429 of file logger_impl.h.

430 {
431  return sinks_;
432 }
std::vector< sink_ptr > sinks_
Definition: logger.h:179
template<typename... Args>
void spdlog::logger::trace ( const char *  fmt,
const Args &...  args 
)
inline

Definition at line 151 of file logger_impl.h.

152 {
153  log(level::trace, fmt, args...);
154 }
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
static QCString args
Definition: declinfo.cpp:674
Definition: bin_to_hex.h:69
template<typename T>
void spdlog::logger::trace ( const T &  msg)
inline

Definition at line 187 of file logger_impl.h.

188 {
189  log(level::trace, msg);
190 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
template<typename... Args>
void spdlog::logger::warn ( const char *  fmt,
const Args &...  args 
)
inline

Definition at line 169 of file logger_impl.h.

170 {
171  log(level::warn, fmt, args...);
172 }
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80
static QCString args
Definition: declinfo.cpp:674
Definition: bin_to_hex.h:69
template<typename T>
void spdlog::logger::warn ( const T &  msg)
inline

Definition at line 205 of file logger_impl.h.

206 {
207  log(level::warn, msg);
208 }
void msg(const char *fmt,...)
Definition: message.cpp:107
void log(level::level_enum lvl, const char *fmt, const Args &...args)
Definition: logger_impl.h:80

Member Data Documentation

log_err_handler spdlog::logger::err_handler_ {[this](const std::string &msg) { this->default_err_handler_(msg); }}
protected

Definition at line 182 of file logger.h.

spdlog::level_t spdlog::logger::flush_level_ {level::off}
protected

Definition at line 181 of file logger.h.

std::atomic<time_t> spdlog::logger::last_err_time_ {0}
protected

Definition at line 183 of file logger.h.

spdlog::level_t spdlog::logger::level_ {spdlog::logger::default_level()}
protected

Definition at line 180 of file logger.h.

std::atomic<size_t> spdlog::logger::msg_counter_ {1}
protected

Definition at line 184 of file logger.h.

const std::string spdlog::logger::name_
protected

Definition at line 178 of file logger.h.

std::vector<sink_ptr> spdlog::logger::sinks_
protected

Definition at line 179 of file logger.h.


The documentation for this class was generated from the following files: