32 LOG_NONE = 0x00000000,
34 LOG_ERROR = 0x00000001,
35 LOG_LEVEL_ERROR = 0x00000001,
37 LOG_WARN = 0x00000002,
38 LOG_LEVEL_WARN = 0x00000003,
40 LOG_DEBUG = 0x00000004,
41 LOG_LEVEL_DEBUG = 0x00000007,
43 LOG_INFO = 0x00000008,
44 LOG_LEVEL_INFO = 0x0000000f,
46 LOG_FUNCTION = 0x00000010,
47 LOG_LEVEL_FUNCTION = 0x0000001f,
49 LOG_LOGIC = 0x00000020,
50 LOG_LEVEL_LOGIC = 0x0000003f,
53 LOG_LEVEL_ALL = LOG_ALL,
55 LOG_PREFIX_FUNC = 0x80000000,
56 LOG_PREFIX_TIME = 0x40000000,
57 LOG_PREFIX_NODE = 0x20000000,
58 LOG_PREFIX_LEVEL = 0x10000000,
59 LOG_PREFIX_ALL = 0xf0000000
122 #define NS_LOG_COMPONENT_DEFINE(name) \
123 static ns3::LogComponent g_log = ns3::LogComponent (name)
125 #define NS_LOG_APPEND_TIME_PREFIX \
126 if (g_log.IsEnabled (ns3::LOG_PREFIX_TIME)) \
128 ns3::LogTimePrinter printer = ns3::LogGetTimePrinter (); \
131 (*printer)(std::clog); \
136 #define NS_LOG_APPEND_NODE_PREFIX \
137 if (g_log.IsEnabled (ns3::LOG_PREFIX_NODE)) \
139 ns3::LogNodePrinter printer = ns3::LogGetNodePrinter (); \
142 (*printer)(std::clog); \
147 #define NS_LOG_APPEND_FUNC_PREFIX \
148 if (g_log.IsEnabled (ns3::LOG_PREFIX_FUNC)) \
150 std::clog << g_log.Name () << ":" << \
151 __FUNCTION__ << "(): "; \
154 #define NS_LOG_APPEND_LEVEL_PREFIX(level) \
155 if (g_log.IsEnabled (ns3::LOG_PREFIX_LEVEL)) \
157 std::clog << "[" << g_log.GetLevelLabel (level) << "] "; \
161 #ifndef NS_LOG_APPEND_CONTEXT
162 #define NS_LOG_APPEND_CONTEXT
167 #ifdef NS3_LOG_ENABLE
216 #define NS_LOG(level, msg) \
219 if (g_log.IsEnabled (level)) \
221 NS_LOG_APPEND_TIME_PREFIX; \
222 NS_LOG_APPEND_NODE_PREFIX; \
223 NS_LOG_APPEND_CONTEXT; \
224 NS_LOG_APPEND_FUNC_PREFIX; \
225 NS_LOG_APPEND_LEVEL_PREFIX (level); \
226 std::clog << msg << std::endl; \
237 #define NS_LOG_ERROR(msg) \
238 NS_LOG (ns3::LOG_ERROR, msg)
246 #define NS_LOG_WARN(msg) \
247 NS_LOG (ns3::LOG_WARN, msg)
255 #define NS_LOG_DEBUG(msg) \
256 NS_LOG (ns3::LOG_DEBUG, msg)
264 #define NS_LOG_INFO(msg) \
265 NS_LOG (ns3::LOG_INFO, msg)
275 #define NS_LOG_FUNCTION_NOARGS() \
278 if (g_log.IsEnabled (ns3::LOG_FUNCTION)) \
280 NS_LOG_APPEND_TIME_PREFIX; \
281 NS_LOG_APPEND_NODE_PREFIX; \
282 NS_LOG_APPEND_CONTEXT; \
283 std::clog << g_log.Name () << ":" \
284 << __FUNCTION__ << "()" << std::endl; \
311 #define NS_LOG_FUNCTION(parameters) \
314 if (g_log.IsEnabled (ns3::LOG_FUNCTION)) \
316 NS_LOG_APPEND_TIME_PREFIX; \
317 NS_LOG_APPEND_NODE_PREFIX; \
318 NS_LOG_APPEND_CONTEXT; \
319 std::clog << g_log.Name () << ":" \
320 << __FUNCTION__ << "("; \
321 ns3::ParameterLogger (std::clog) << parameters; \
322 std::clog << ")" << std::endl; \
334 #define NS_LOG_LOGIC(msg) \
335 NS_LOG (ns3::LOG_LOGIC, msg)
343 #define NS_LOG_UNCOND(msg) \
346 std::clog << msg << std::endl; \
352 #define NS_LOG(level, msg)
353 #define NS_LOG_ERROR(msg)
354 #define NS_LOG_WARN(msg)
355 #define NS_LOG_DEBUG(msg)
356 #define NS_LOG_INFO(msg)
357 #define NS_LOG_FUNCTION_NOARGS()
358 #define NS_LOG_FUNCTION(msg)
359 #define NS_LOG_LOGIC(msg)
360 #define NS_LOG_UNCOND(msg)
375 typedef void (*LogTimePrinter)(std::ostream &os);
376 typedef void (*LogNodePrinter)(std::ostream &os);
378 void LogSetTimePrinter (LogTimePrinter);
379 LogTimePrinter LogGetTimePrinter (
void);
381 void LogSetNodePrinter (LogNodePrinter);
382 LogNodePrinter LogGetNodePrinter (
void);
388 void EnvVarCheck (
char const *name);
389 bool IsEnabled (
enum LogLevel level)
const;
390 bool IsNoneEnabled (
void)
const;
391 void Enable (
enum LogLevel level);
392 void Disable (
enum LogLevel level);
393 char const *Name (
void)
const;
394 std::string GetLevelLabel(
const enum LogLevel level)
const;
410 switch (m_itemNumber)
416 m_os <<
", " << param;
void LogComponentEnableAll(enum LogLevel level)
void LogComponentDisableAll(enum LogLevel level)
void LogComponentDisable(char const *name, enum LogLevel level)
void LogComponentPrintList(void)
void LogComponentEnable(char const *name, enum LogLevel level)