OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
io_log.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_IO_IO_LOG_H_
6 
7 #define SRC_IO_IO_LOG_H_
8 
9 #include "base/logging.h"
10 #include "sandesh/sandesh_trace.h"
11 #include "sandesh/common/vns_types.h"
12 #include "sandesh/common/vns_constants.h"
13 #include "io/io_types.h"
14 #include "io/tcp_server.h"
15 #include "io/tcp_session.h"
16 
17 #define IO_TRACE_BUF "IOTraceBuf"
18 #define IO_LOG_FLAG_SYSLOG 1
19 #define IO_LOG_FLAG_TRACE 2
20 #define IO_LOG_FLAG_ALL (IO_LOG_FLAG_SYSLOG | IO_LOG_FLAG_TRACE)
21 
23 
24 #define IO_LOG(obj, level, flags, category, ...) \
25 do { \
26  if (LoggingDisabled()) break; \
27  if ((flags) & IO_LOG_FLAG_SYSLOG) { \
28  obj##Log::Send(category, \
29  level, __FILE__, __LINE__, ##__VA_ARGS__); \
30  } \
31  if ((flags) & IO_LOG_FLAG_TRACE) { \
32  obj##Trace::TraceMsg(IOTraceBuf, __FILE__, __LINE__, ##__VA_ARGS__); \
33  } \
34 } while (false)
35 
36 //
37 // GENERIC Log and Trace macros
38 //
39 #define GEN_DIR_OUT ">"
40 #define GEN_DIR_IN "<"
41 #define GEN_DIR_NA ""
42 
43 //
44 // TCP Log and Trace macros
45 //
46 #define TCP_DIR_OUT GEN_DIR_OUT
47 #define TCP_DIR_IN GEN_DIR_IN
48 #define TCP_DIR_NA GEN_DIR_NA
49 
50 //
51 // UDP Log and Trace macros
52 //
53 #define UDP_DIR_OUT GEN_DIR_OUT
54 #define UDP_DIR_IN GEN_DIR_IN
55 #define UDP_DIR_NA GEN_DIR_NA
56 
57 //
58 // Base macros to log and/or trace TCP messages with C++ string as last arg.
59 //
60 #define IO_SERVER_LOG_STR(msg, cat, obj, level, flags, server, dir, arg) \
61  do { \
62  if (LoggingDisabled()) break; \
63  if ((server) && (server)->DisableSandeshLogMessages()) { \
64  LOG(DEBUG, "Server " << (server)->ToString() << dir << " " << arg);\
65  break; \
66  } \
67  std::ostringstream out; \
68  out << arg; \
69  IO_LOG(msg, level, flags, cat, \
70  (server) ? (server)->ToString() : "", dir, out.str()); \
71  } while (false)
72 
73 #define IO_SESSION_LOG_STR(msg, cat, obj, level, flags, session, dir, arg) \
74  do { \
75  if (LoggingDisabled()) break; \
76  if ((session) && (session)->server() && \
77  (session)->server()->DisableSandeshLogMessages()) { \
78  LOG(DEBUG, "Session " << (session)->ToString() << dir<< " "<< arg);\
79  break; \
80  } \
81  std::ostringstream out; \
82  out << arg; \
83  IO_LOG(msg, level, flags, cat, \
84  (session) ? (session)->ToString() : "", dir, out.str()); \
85  } while (false)
86 
87 #define IO_UT_LOG_DEBUG(msg, cat, dir, arg) \
88 do { \
89  if (LoggingDisabled()) break; \
90  std::ostringstream out; \
91  out << arg; \
92  IO_LOG(msg, SandeshLevel::UT_DEBUG, IO_LOG_FLAG_SYSLOG, cat, dir, \
93  out.str()); \
94 } while (false)
95 
96 #define TCP_SERVER_LOG_STR(obj, level, flags, server, dir, arg) \
97  IO_SERVER_LOG_STR(TcpServerMessage, "TCP", obj, level, flags, \
98  server, dir, arg)
99 
100 #define TCP_SERVER_LOG_ERROR(server, dir, arg) \
101  TCP_SERVER_LOG_STR(TcpServerMessage, SandeshLevel::SYS_ERR, \
102  IO_LOG_FLAG_ALL, server, dir, arg)
103 #define TCP_SERVER_LOG_INFO(server, dir, arg) \
104  TCP_SERVER_LOG_STR(TcpServerMessage, SandeshLevel::SYS_INFO, \
105  IO_LOG_FLAG_SYSLOG, server, dir, arg)
106 #define TCP_SERVER_LOG_DEBUG(server, dir, arg) \
107  TCP_SERVER_LOG_STR(TcpServerMessage, SandeshLevel::SYS_DEBUG, \
108  IO_LOG_FLAG_SYSLOG, server, dir, arg)
109 #define TCP_SERVER_LOG_UT_DEBUG(server, dir, arg) \
110  TCP_SERVER_LOG_STR(TcpServerMessage, SandeshLevel::UT_DEBUG, \
111  IO_LOG_FLAG_SYSLOG, server, dir, arg)
112 
113 #define TCP_SESSION_LOG_STR(obj, level, flags, session, dir, arg) \
114  IO_SESSION_LOG_STR(TcpSessionMessage, "TCP", obj, level, flags, \
115  session, dir, arg)
116 
117 #define TCP_SESSION_LOG_ERROR(session, dir, arg) \
118  TCP_SESSION_LOG_STR(TcpSessionMessage, SandeshLevel::SYS_ERR, \
119  IO_LOG_FLAG_ALL, session, dir, arg)
120 #define TCP_SESSION_LOG_INFO(session, dir, arg) \
121  TCP_SESSION_LOG_STR(TcpSessionMessage, SandeshLevel::SYS_INFO, \
122  IO_LOG_FLAG_SYSLOG, session, dir, arg)
123 #define TCP_SESSION_LOG_DEBUG(session, dir, arg) \
124  TCP_SESSION_LOG_STR(TcpSessionMessage, SandeshLevel::SYS_DEBUG, \
125  IO_LOG_FLAG_SYSLOG, session, dir, arg)
126 #define TCP_SESSION_LOG_UT_DEBUG(session, dir, arg) \
127  TCP_SESSION_LOG_STR(TcpSessionMessage, SandeshLevel::UT_DEBUG, \
128  IO_LOG_FLAG_SYSLOG, session, dir, arg)
129 
130 #define TCP_UT_LOG_DEBUG(arg) \
131  IO_UT_LOG_DEBUG(TcpMessage, "TCP", TCP_DIR_NA, arg)
132 
133 //
134 // Event Manager Log and Trace macros
135 //
136 #define EVENT_MANAGER_LOG_ERROR(arg) \
137 do { \
138  if (LoggingDisabled()) break; \
139  std::ostringstream out; \
140  out << arg; \
141  IO_LOG(EventManagerMessage, SandeshLevel::UT_ERR, IO_LOG_FLAG_ALL, \
142  "TCP", out.str()); \
143 } while (false)
144 
145 //
146 // Event Manager Log and Trace macros for UDP
147 //
148 #define UDP_EVENT_MANAGER_LOG_ERROR(arg) \
149 do { \
150  if (LoggingDisabled()) break; \
151  std::ostringstream out; \
152  out << arg; \
153  IO_LOG(EventManagerMessage, SandeshLevel::UT_ERR, IO_LOG_FLAG_ALL, \
154  "UDP", out.str()); \
155 } while (false)
156 
157 #define UDP_SERVER_LOG_STR(obj, level, flags, server, dir, arg) \
158  IO_SERVER_LOG_STR(UdpServerMessage, "UDP", obj, level, flags, \
159  server, dir, arg)
160 #define UDP_SERVER_LOG_ERROR(server, dir, arg) \
161  UDP_SERVER_LOG_STR(UdpServerMessage, SandeshLevel::SYS_ERR, \
162  IO_LOG_FLAG_ALL, server, dir, arg)
163 #define UDP_SERVER_LOG_INFO(server, dir, arg) \
164  UDP_SERVER_LOG_STR(UdpServerMessage, SandeshLevel::SYS_INFO, \
165  IO_LOG_FLAG_SYSLOG, server, dir, arg)
166 #define UDP_SERVER_LOG_DEBUG(server, dir, arg) \
167  UDP_SERVER_LOG_STR(UdpServerMessage, SandeshLevel::SYS_DEBUG, \
168  IO_LOG_FLAG_SYSLOG, server, dir, arg)
169 #define UDP_SERVER_LOG_UT_DEBUG(server, dir, arg) \
170  UDP_SERVER_LOG_STR(UdpServerMessage, SandeshLevel::UT_DEBUG, \
171  IO_LOG_FLAG_SYSLOG, server, dir, arg)
172 
173 
174 #define UDP_SESSION_LOG_STR(obj, level, flags, session, dir, arg) \
175  IO_SESSION_LOG_STR(UdpSessionMessage, "UDP", obj, level, flags, \
176  session, dir, arg)
177 
178 #define UDP_UT_LOG_DEBUG(arg) \
179  IO_UT_LOG_DEBUG(UdpMessage, "UDP", UDP_DIR_NA, arg)
180 
181 #endif // SRC_IO_IO_LOG_H_
182 
SandeshTraceBufferPtr IOTraceBuf
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
Definition: sandesh_trace.h:18