24 #include <core/threading/thread.h>
25 #include <core/utils/lock_list.h>
26 #include <logging/logger.h>
27 #include <logging/multi.h>
49 LockList<Logger *> loggers;
50 LockList<Logger *>::iterator logit;
79 data =
new MultiLoggerData();
88 data =
new MultiLoggerData();
89 data->loggers.push_back_locked(logger);
98 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
99 delete (*data->logit);
101 data->loggers.clear();
102 data->loggers.unlock();
114 data->loggers.lock();
115 data->loggers.push_back(logger);
117 data->loggers.sort();
118 data->loggers.unique();
119 data->loggers.unlock();
121 data->mutex->unlock();
133 data->loggers.remove_locked(logger);
135 data->mutex->unlock();
145 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
149 data->mutex->unlock();
156 gettimeofday(&now, NULL);
161 va_start(va, format);
162 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
165 (*data->logit)->
vtlog(level, &now, component, format, vac);
170 data->mutex->unlock();
177 gettimeofday(&now, NULL);
182 va_start(va, format);
183 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
186 (*data->logit)->
vlog_debug(component, format, vac);
191 data->mutex->unlock();
198 gettimeofday(&now, NULL);
203 va_start(va, format);
204 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
207 (*data->logit)->
vlog_info(component, format, vac);
212 data->mutex->unlock();
219 gettimeofday(&now, NULL);
224 va_start(va, format);
225 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
228 (*data->logit)->
vlog_warn(component, format, vac);
233 data->mutex->unlock();
240 gettimeofday(&now, NULL);
245 va_start(va, format);
246 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
249 (*data->logit)->
vlog_error(component, format, vac);
254 data->mutex->unlock();
261 gettimeofday(&now, NULL);
265 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
266 (*data->logit)->
log(level, component, e);
269 data->mutex->unlock();
276 gettimeofday(&now, NULL);
280 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
281 (*data->logit)->
tlog_debug(&now, component, e);
285 data->mutex->unlock();
292 gettimeofday(&now, NULL);
296 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
297 (*data->logit)->
tlog_info(&now, component, e);
300 data->mutex->unlock();
307 gettimeofday(&now, NULL);
311 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
312 (*data->logit)->
tlog_warn(&now, component, e);
315 data->mutex->unlock();
322 gettimeofday(&now, NULL);
326 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
327 (*data->logit)->
tlog_error(&now, component, e);
330 data->mutex->unlock();
337 gettimeofday(&now, NULL);
341 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
344 (*data->logit)->
vlog(level, component, format, vac);
348 data->mutex->unlock();
355 gettimeofday(&now, NULL);
359 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
362 (*data->logit)->
vtlog_debug(&now, component, format, vac);
366 data->mutex->unlock();
373 gettimeofday(&now, NULL);
377 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
380 (*data->logit)->
vtlog_info(&now, component, format, vac);
384 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_warn(&now, component, format, vac);
402 data->mutex->unlock();
409 gettimeofday(&now, NULL);
413 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
416 (*data->logit)->
vtlog_error(&now, component, format, vac);
420 data->mutex->unlock();
429 va_start(va, format);
430 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
433 (*data->logit)->
vtlog(level, t, component, format, vac);
438 data->mutex->unlock();
447 va_start(va, format);
448 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
451 (*data->logit)->
vlog_debug(component, format, vac);
456 data->mutex->unlock();
466 va_start(va, format);
467 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
470 (*data->logit)->
vtlog_info(t, component, format, vac);
475 data->mutex->unlock();
485 va_start(va, format);
486 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
489 (*data->logit)->
vtlog_warn(t, component, format, vac);
494 data->mutex->unlock();
504 va_start(va, format);
505 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
508 (*data->logit)->
vtlog_error(t, component, format, vac);
513 data->mutex->unlock();
522 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
523 (*data->logit)->
tlog(level, t, component, e);
526 data->mutex->unlock();
532 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
543 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
547 data->mutex->unlock();
556 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
560 data->mutex->unlock();
569 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
573 data->mutex->unlock();
579 const char * component,
586 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
589 (*data->logit)->
vtlog(level, t, component, format, vac);
593 data->mutex->unlock();
602 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
605 (*data->logit)->
vtlog_debug(t, component, format, vac);
609 data->mutex->unlock();
618 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
621 (*data->logit)->
vtlog_info(t, component, format, vac);
625 data->mutex->unlock();
634 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
637 (*data->logit)->
vtlog_warn(t, component, format, vac);
641 data->mutex->unlock();
650 for (data->logit = data->loggers.begin(); data->logit != data->loggers.end(); ++data->logit) {
653 (*data->logit)->
vtlog_error(t, component, format, vac);
657 data->mutex->unlock();