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) {
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) {
570 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
574 data->mutex->unlock();
584 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
588 data->mutex->unlock();
598 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
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();