View | Details | Raw Unified | Return to bug 1531
Collapse All | Expand All

(-)a/src/core/model/log.cc (-47 / +94 lines)
 Lines 127-133    Link Here 
127
          component = tmp;
127
          component = tmp;
128
          if (component == myName || component == "*")
128
          if (component == myName || component == "*")
129
            {
129
            {
130
              int level = LOG_ALL | LOG_PREFIX_TIME | LOG_PREFIX_FUNC | LOG_PREFIX_NODE | LOG_PREFIX_LEVEL;
130
              int level = LOG_LEVEL_ALL | LOG_PREFIX_ALL;
131
              Enable ((enum LogLevel)level);
131
              Enable ((enum LogLevel)level);
132
              return;
132
              return;
133
            }
133
            }
 Lines 140-145    Link Here 
140
              int level = 0;
140
              int level = 0;
141
              std::string::size_type cur_lev;
141
              std::string::size_type cur_lev;
142
              std::string::size_type next_lev = equal;
142
              std::string::size_type next_lev = equal;
143
              bool pre_pipe = true;  // before the first '|', enables positional 'all', '*'
143
              do
144
              do
144
                {
145
                {
145
                  cur_lev = next_lev + 1;
146
                  cur_lev = next_lev + 1;
 Lines 169-197    Link Here 
169
                    {
170
                    {
170
                      level |= LOG_LOGIC;
171
                      level |= LOG_LOGIC;
171
                    }
172
                    }
172
                  else if (lev == "all")
173
                  else if ( pre_pipe && ( (lev == "all") || (lev == "*") ) )
173
                    {
174
                    {
174
                      level |= LOG_ALL;
175
                      level |= LOG_LEVEL_ALL;
175
                    }
176
                    }
176
                  else if (lev == "prefix_func")
177
                  else if ( (lev == "prefix_func") || (lev == "func") )
177
                    {
178
                    {
178
                      level |= LOG_PREFIX_FUNC;
179
                      level |= LOG_PREFIX_FUNC;
179
                    }
180
                    }
180
                  else if (lev == "prefix_time")
181
                  else if ( (lev == "prefix_time") || (lev == "time") )
181
                    {
182
                    {
182
                      level |= LOG_PREFIX_TIME;
183
                      level |= LOG_PREFIX_TIME;
183
                    }
184
                    }
184
                  else if (lev == "prefix_node")
185
                  else if ( (lev == "prefix_node") || (lev == "node") )
185
                    {
186
                    {
186
                      level |= LOG_PREFIX_NODE;
187
                      level |= LOG_PREFIX_NODE;
187
                    }
188
                    }
188
                  else if (lev == "prefix_level")
189
                  else if ( (lev == "prefix_level") || (lev == "level") )
189
                    {
190
                    {
190
                      level |= LOG_PREFIX_LEVEL;
191
                      level |= LOG_PREFIX_LEVEL;
191
                    }
192
                    }
192
                  else if (lev == "prefix_all")
193
                  else if ( (lev == "prefix_all") ||
194
                            (!pre_pipe && ( (lev == "all") || (lev == "*") ) )
195
                            )
193
                    {
196
                    {
194
                      level |= LOG_PREFIX_FUNC | LOG_PREFIX_TIME | LOG_PREFIX_NODE | LOG_PREFIX_LEVEL;
197
                      level |= LOG_PREFIX_ALL;
195
                    }
198
                    }
196
                  else if (lev == "level_error")
199
                  else if (lev == "level_error")
197
                    {
200
                    {
 Lines 221-226    Link Here 
221
                    {
224
                    {
222
                      level |= LOG_LEVEL_ALL;
225
                      level |= LOG_LEVEL_ALL;
223
                    }
226
                    }
227
                  else if (lev == "**")
228
                    {
229
                      level |= LOG_LEVEL_ALL | LOG_PREFIX_ALL;
230
                    }
231
232
                  pre_pipe = false;
224
                } while (next_lev != std::string::npos);
233
                } while (next_lev != std::string::npos);
225
234
226
              Enable ((enum LogLevel)level);
235
              Enable ((enum LogLevel)level);
 Lines 264-294    Link Here 
264
}
273
}
265
274
266
// static
275
// static
267
std::map<enum LogLevel, std::string> *
268
LogComponent::LevelLabels()
269
{
270
  std::map<enum LogLevel, std::string> * labels = new std::map<enum LogLevel, std::string>;
271
  labels->insert (std::make_pair (LOG_ERROR, "ERROR"));
272
  labels->insert (std::make_pair (LOG_WARN,  "WARN"));
273
  labels->insert (std::make_pair (LOG_DEBUG, "DEBUG"));
274
  labels->insert (std::make_pair (LOG_INFO,  "INFO"));
275
  labels->insert (std::make_pair (LOG_LOGIC, "LOGIC"));
276
277
  return labels;
278
}
279
280
// static
281
std::string
276
std::string
282
LogComponent::GetLevelLabel(const enum LogLevel level)
277
LogComponent::GetLevelLabel(const enum LogLevel level)
283
{
278
{
284
  static std::map<enum LogLevel, std::string> * label = LevelLabels ();
279
  if (level == LOG_ERROR)
285
  if (label) 
286
    {
280
    {
287
      return label->find (level)->second;
281
      return "ERROR";
282
    }
283
  else if (level == LOG_WARN)
284
    {
285
      return "WARN ";
286
    }
287
  else if (level == LOG_DEBUG)
288
    {
289
      return "DEBUG";
290
    }
291
  else if (level == LOG_INFO)
292
    {
293
      return "INFO ";
294
    }
295
  else if (level == LOG_FUNCTION)
296
    {
297
      return "FUNCT";
298
    }
299
  else if (level == LOG_LOGIC)
300
    {
301
      return "LOGIC";
288
    }
302
    }
289
  else
303
  else
290
    {
304
    {
291
      return std::string("");
305
      return "unknown";
292
    }
306
    }
293
}
307
}
294
  
308
  
 Lines 371-403    Link Here 
371
          std::cout << "0" << std::endl;
385
          std::cout << "0" << std::endl;
372
          continue;
386
          continue;
373
        }
387
        }
374
      if (i->second->IsEnabled (LOG_ERROR))
388
      if (i->second->IsEnabled (LOG_LEVEL_ALL))
375
        {
389
        {
376
          std::cout << "error";
390
          std::cout << "all";
377
        }
391
        }
378
      if (i->second->IsEnabled (LOG_WARN))
392
      else
379
        {
393
        {
380
          std::cout << "|warn";
394
          if (i->second->IsEnabled (LOG_ERROR))
395
            {
396
              std::cout << "error";
397
            }
398
          if (i->second->IsEnabled (LOG_WARN))
399
            {
400
              std::cout << "|warn";
401
            }
402
          if (i->second->IsEnabled (LOG_DEBUG))
403
            {
404
              std::cout << "|debug";
405
            }
406
          if (i->second->IsEnabled (LOG_INFO))
407
            {
408
              std::cout << "|info";
409
            }
410
          if (i->second->IsEnabled (LOG_FUNCTION))
411
            {
412
              std::cout << "|function";
413
            }
414
          if (i->second->IsEnabled (LOG_LOGIC))
415
            {
416
              std::cout << "|logic";
417
            }
381
        }
418
        }
382
      if (i->second->IsEnabled (LOG_DEBUG))
419
      if (i->second->IsEnabled (LOG_PREFIX_ALL))
383
        {
420
        {
384
          std::cout << "|debug";
421
          std::cout << "|prefix_all";
385
        }
422
        }
386
      if (i->second->IsEnabled (LOG_INFO))
423
      else
387
        {
424
        {
388
          std::cout << "|info";
425
          if (i->second->IsEnabled (LOG_PREFIX_FUNC))
389
        }
426
            {
390
      if (i->second->IsEnabled (LOG_FUNCTION))
427
              std::cout << "|func";
391
        {
428
            }
392
          std::cout << "|function";
429
          if (i->second->IsEnabled (LOG_PREFIX_TIME))
393
        }
430
            {
394
      if (i->second->IsEnabled (LOG_LOGIC))
431
              std::cout << "|time";
395
        {
432
            }
396
          std::cout << "|logic";
433
          if (i->second->IsEnabled (LOG_PREFIX_NODE))
397
        }
434
            {
398
      if (i->second->IsEnabled (LOG_ALL))
435
              std::cout << "|node";
399
        {
436
            }
400
          std::cout << "|all";
437
          if (i->second->IsEnabled (LOG_PREFIX_LEVEL))
438
            {
439
              std::cout << "|level";
440
            }
401
        }
441
        }
402
      std::cout << std::endl;
442
      std::cout << std::endl;
403
    }
443
    }
 Lines 476-483    Link Here 
476
                      || lev == "logic"
516
                      || lev == "logic"
477
                      || lev == "all"
517
                      || lev == "all"
478
                      || lev == "prefix_func"
518
                      || lev == "prefix_func"
519
                      || lev == "func"
479
                      || lev == "prefix_time"
520
                      || lev == "prefix_time"
521
                      || lev == "time"
480
                      || lev == "prefix_node"
522
                      || lev == "prefix_node"
523
                      || lev == "node"
524
                      || lev == "prefix_level"
525
                      || lev == "level"
526
                      || lev == "prefix_all"
481
                      || lev == "level_error"
527
                      || lev == "level_error"
482
                      || lev == "level_warn"
528
                      || lev == "level_warn"
483
                      || lev == "level_debug"
529
                      || lev == "level_debug"
 Lines 486-491    Link Here 
486
                      || lev == "level_logic"
532
                      || lev == "level_logic"
487
                      || lev == "level_all"
533
                      || lev == "level_all"
488
                      || lev == "*"
534
                      || lev == "*"
535
                      || lev == "**"
489
		     )
536
		     )
490
                    {
537
                    {
491
                      continue;
538
                      continue;
(-)a/src/core/model/log.h (-5 / +5 lines)
 Lines 18-25    Link Here 
18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
18
 * Author: Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
19
 */
19
 */
20
20
21
#ifndef LOG_H
21
#ifndef NS3_LOG_H
22
#define LOG_H
22
#define NS3_LOG_H
23
23
24
#include <string>
24
#include <string>
25
#include <iostream>
25
#include <iostream>
 Lines 55-61    Link Here 
55
  LOG_PREFIX_FUNC    = 0x80000000, // prefix all trace prints with function
55
  LOG_PREFIX_FUNC    = 0x80000000, // prefix all trace prints with function
56
  LOG_PREFIX_TIME    = 0x40000000, // prefix all trace prints with simulation time
56
  LOG_PREFIX_TIME    = 0x40000000, // prefix all trace prints with simulation time
57
  LOG_PREFIX_NODE    = 0x20000000, // prefix all trace prints with simulation node
57
  LOG_PREFIX_NODE    = 0x20000000, // prefix all trace prints with simulation node
58
  LOG_PREFIX_LEVEL   = 0x10000000  // prefix all trace prints with log level (severity)
58
  LOG_PREFIX_LEVEL   = 0x10000000, // prefix all trace prints with log level (severity)
59
  LOG_PREFIX_ALL     = 0xf0000000  // all prefixes
59
};
60
};
60
61
61
/**
62
/**
 Lines 392-398    Link Here 
392
  char const *Name (void) const;
393
  char const *Name (void) const;
393
  static std::string GetLevelLabel(const enum LogLevel level);
394
  static std::string GetLevelLabel(const enum LogLevel level);
394
private:
395
private:
395
  static std::map<enum LogLevel, std::string> * LevelLabels();
396
  int32_t     m_levels;
396
  int32_t     m_levels;
397
  char const *m_name;
397
  char const *m_name;
398
};
398
};
 Lines 424-427    Link Here 
424
} // namespace ns3
424
} // namespace ns3
425
425
426
426
427
#endif /* LOG_H */
427
#endif /* NS3_LOG_H */

Return to bug 1531