24 #include <logging/multi.h> 25 #include <logging/logger.h> 27 #include <core/utils/lock_list.h> 28 #include <core/threading/thread.h> 50 LockList<Logger *> loggers;
51 LockList<Logger *>::iterator logit;
81 data =
new MultiLoggerData();
91 data =
new MultiLoggerData();
92 data->loggers.push_back_locked(logger);
101 data->loggers.lock();
102 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
103 delete (*data->logit);
105 data->loggers.clear();
106 data->loggers.unlock();
119 data->loggers.lock();
120 data->loggers.push_back(logger);
121 data->loggers.sort();
122 data->loggers.unique();
123 data->loggers.unlock();
125 data->mutex->unlock();
138 data->loggers.remove_locked(logger);
140 data->mutex->unlock();
150 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
151 (*data->logit)->set_loglevel(level);
154 data->mutex->unlock();
162 gettimeofday(&now, NULL);
167 va_start(va, format);
168 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
171 (*data->logit)->vtlog(level, &now, component, format, vac);
176 data->mutex->unlock();
184 gettimeofday(&now, NULL);
189 va_start(va, format);
190 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
193 (*data->logit)->vlog_debug(component, format, vac);
198 data->mutex->unlock();
206 gettimeofday(&now, NULL);
211 va_start(va, format);
212 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
215 (*data->logit)->vlog_info(component, format, vac);
220 data->mutex->unlock();
228 gettimeofday(&now, NULL);
233 va_start(va, format);
234 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
237 (*data->logit)->vlog_warn(component, format, vac);
242 data->mutex->unlock();
250 gettimeofday(&now, NULL);
255 va_start(va, format);
256 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
259 (*data->logit)->vlog_error(component, format, vac);
264 data->mutex->unlock();
272 gettimeofday(&now, NULL);
276 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
277 (*data->logit)->log(level, component, e);
280 data->mutex->unlock();
288 gettimeofday(&now, NULL);
292 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
293 (*data->logit)->tlog_debug(&now, component, e);
297 data->mutex->unlock();
304 gettimeofday(&now, NULL);
308 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
309 (*data->logit)->tlog_info(&now, component, e);
312 data->mutex->unlock();
320 gettimeofday(&now, NULL);
324 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
325 (*data->logit)->tlog_warn(&now, component, e);
328 data->mutex->unlock();
336 gettimeofday(&now, NULL);
340 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
341 (*data->logit)->tlog_error(&now, component, e);
344 data->mutex->unlock();
350 const char *component,
const char *format, va_list va)
353 gettimeofday(&now, NULL);
357 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
360 (*data->logit)->vlog(level, component, format, vac);
364 data->mutex->unlock();
372 gettimeofday(&now, NULL);
376 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
379 (*data->logit)->vtlog_debug(&now, component, format, vac);
383 data->mutex->unlock();
391 gettimeofday(&now, NULL);
395 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
398 (*data->logit)->vtlog_info(&now, component, format, vac);
402 data->mutex->unlock();
410 gettimeofday(&now, NULL);
414 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
417 (*data->logit)->vtlog_warn(&now, component, format, vac);
421 data->mutex->unlock();
429 gettimeofday(&now, NULL);
433 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
436 (*data->logit)->vtlog_error(&now, component, format, vac);
440 data->mutex->unlock();
445 const char *component,
const char *format, ...)
450 va_start(va, format);
451 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
454 (*data->logit)->vtlog(level, t, component, format, vac);
459 data->mutex->unlock();
469 va_start(va, format);
470 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
473 (*data->logit)->vlog_debug(component, format, vac);
478 data->mutex->unlock();
489 va_start(va, format);
490 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
493 (*data->logit)->vtlog_info(t, component, format, vac);
498 data->mutex->unlock();
509 va_start(va, format);
510 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
513 (*data->logit)->vtlog_warn(t, component, format, vac);
518 data->mutex->unlock();
529 va_start(va, format);
530 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
533 (*data->logit)->vtlog_error(t, component, format, vac);
538 data->mutex->unlock();
548 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
549 (*data->logit)->tlog(level, t, component, e);
552 data->mutex->unlock();
559 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
560 (*data->logit)->tlog_error(t, component, e);
570 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
571 (*data->logit)->tlog_error(t, component, e);
574 data->mutex->unlock();
584 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
585 (*data->logit)->tlog_error(t, component, e);
588 data->mutex->unlock();
598 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
599 (*data->logit)->tlog_error(t, component, e);
602 data->mutex->unlock();
610 const char *component,
const char *format, va_list va)
615 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
618 (*data->logit)->vtlog(level, t, component, format, vac);
622 data->mutex->unlock();
632 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
635 (*data->logit)->vtlog_debug(t, component, format, vac);
639 data->mutex->unlock();
649 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
652 (*data->logit)->vtlog_info(t, component, format, vac);
656 data->mutex->unlock();
666 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
669 (*data->logit)->vtlog_warn(t, component, format, vac);
673 data->mutex->unlock();
683 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
686 (*data->logit)->vtlog_error(t, component, format, vac);
690 data->mutex->unlock();
virtual void vtlog_debug(struct timeval *t, const char *component, const char *format, va_list va)
Log debug message for specific time.
virtual void log_error(const char *component, const char *format,...)
Log error message.
Fawkes library namespace.
virtual void tlog_error(struct timeval *t, const char *component, const char *format,...)
Log error message for specific time.
virtual void tlog_warn(struct timeval *t, const char *component, const char *format,...)
Log warning message for specific time.
virtual void tlog(LogLevel level, struct timeval *t, const char *component, const char *format,...)
Log message of given log level and time.
thread cannot be cancelled
virtual void vtlog_error(struct timeval *t, const char *component, const char *format, va_list va)
Log error message for specific time.
static void set_cancel_state(CancelState new_state, CancelState *old_state=0)
Set the cancel state of the current thread.
virtual void tlog_info(struct timeval *t, const char *component, const char *format,...)
Log informational message for specific time.
virtual void vtlog_info(struct timeval *t, const char *component, const char *format, va_list va)
Log informational message for specific time.
virtual ~MultiLogger()
Destructor.
virtual void tlog_debug(struct timeval *t, const char *component, const char *format,...)
Log debug message for specific time.
virtual void set_loglevel(LogLevel level)
Sets the log level.
Base class for exceptions in Fawkes.
virtual void vlog_error(const char *component, const char *format, va_list va)
Log error message.
virtual void vtlog(LogLevel level, struct timeval *t, const char *component, const char *format, va_list va)
Log message for given log level and time.
virtual void vlog_debug(const char *component, const char *format, va_list va)
Log debug message.
MultiLogger()
Constructor.
virtual void log(LogLevel level, const char *component, const char *format,...)
Log message of given log level.
virtual void log_warn(const char *component, const char *format,...)
Log warning message.
virtual void vlog_info(const char *component, const char *format, va_list va)
Log informational message.
void add_logger(Logger *logger)
Add a logger.
virtual void vtlog_warn(struct timeval *t, const char *component, const char *format, va_list va)
Log warning message for specific time.
virtual void vlog_warn(const char *component, const char *format, va_list va)
Log warning message.
virtual void log_info(const char *component, const char *format,...)
Log informational message.
virtual void vlog(LogLevel level, const char *component, const char *format, va_list va)
Log message for given log level.
virtual void log_debug(const char *component, const char *format,...)
Log debug message.
void remove_logger(Logger *logger)
Remove logger.