OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
routing_instance_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_BGP_ROUTING_INSTANCE_ROUTING_INSTANCE_LOG_H_
6 #define SRC_BGP_ROUTING_INSTANCE_ROUTING_INSTANCE_LOG_H_
7 
8 #include <sandesh/sandesh_types.h>
9 #include <sandesh/sandesh.h>
10 #include <sandesh/sandesh_trace.h>
11 #include <sandesh/common/vns_types.h>
12 #include <sandesh/common/vns_constants.h>
13 
14 #include <string>
15 
16 #include "bgp/routing-instance/routing_instance_analytics_types.h"
17 
18 //
19 // RoutingInstance trace macros. Optionally logs the server name as well for
20 // easier debugging in multiple server unit tests.
21 //
22 #define ROUTING_INSTANCE_DORMANT_TRACE_BUFFER_THRESHOLD_1K 1024
23 #define ROUTING_INSTANCE_DORMANT_TRACE_BUFFER_SIZE_64K (64*1024)
24 
25 #define RTINSTANCE_TRACE_BUF "RoutingInstanceTraceBuf"
27 
28 #define RTINSTANCE_LOG_FLAG_SYSLOG 1
29 #define RTINSTANCE_LOG_FLAG_TRACE 2
30 #define RTINSTANCE_LOG_FLAG_ALL (RTINSTANCE_LOG_FLAG_SYSLOG | \
31  RTINSTANCE_LOG_FLAG_TRACE) \
32 
33 #define RTINSTANCE_LOG_INTERNAL(type, server, rti, level, flags, ...) \
34 do { \
35  if (LoggingDisabled()) break; \
36  if ((flags) & RTINSTANCE_LOG_FLAG_SYSLOG) { \
37  bgp_log_test::LogServerName(server); \
38  RoutingInstance##type##Log::Send("RoutingInstance", \
39  level, __FILE__, __LINE__, ##__VA_ARGS__); \
40  } \
41  if ((flags) & RTINSTANCE_LOG_FLAG_TRACE) { \
42  RoutingInstance##type::TraceMsg((rti)->trace_buffer(), __FILE__, \
43  __LINE__, ##__VA_ARGS__); \
44  } \
45 } while (false) \
46 
47 #define RTINSTANCE_LOG_INTERNAL2(type, server, level, flags, ...) \
48 do { \
49  if (LoggingDisabled()) break; \
50  if ((flags) & RTINSTANCE_LOG_FLAG_SYSLOG) { \
51  bgp_log_test::LogServerName(server); \
52  RoutingInstance##type##Log::Send("RoutingInstance", \
53  level, __FILE__, __LINE__, ##__VA_ARGS__); \
54  } \
55  if ((flags) & RTINSTANCE_LOG_FLAG_TRACE) { \
56  const std::string __trace_buf(RTINSTANCE_TRACE_BUF); \
57  RoutingInstance##type::TraceMsg(RoutingInstanceTraceBuf, \
58  __FILE__, __LINE__, ##__VA_ARGS__); \
59  } \
60 } while (false) \
61 
62 #define RTINSTANCE_LOG(type, rtinstance, level, flags, ...) \
63  RTINSTANCE_LOG_INTERNAL(type, (rtinstance)->server(), rtinstance, level, \
64  flags, \
65  (rtinstance)->GetVirtualNetworkName(), \
66  (rtinstance)->name(), ##__VA_ARGS__); \
67 
68 #define RTINSTANCE_LOG_MESSAGE(server, level, flags, ...) \
69  RTINSTANCE_LOG_INTERNAL2(Message, server, level, flags, ##__VA_ARGS__); \
70 
71 #define RTINSTANCE_LOG_WARNING_MESSAGE(server, flags, ...) \
72  RTINSTANCE_LOG_INTERNAL2(WarningMessage, server, SandeshLevel::SYS_WARN, \
73  flags, ##__VA_ARGS__); \
74 
75 #define RTINSTANCE_LOG_PEER(type, rtinstance, peer, level, flags, ...) \
76  RTINSTANCE_LOG_INTERNAL(Peer##type, (rtinstance)->server(), rtinstance, \
77  level, flags, \
78  (rtinstance)->GetVirtualNetworkName(), \
79  (rtinstance)->name(), \
80  (peer)->peer_key().endpoint.address().to_string(), \
81  ##__VA_ARGS__); \
82 
83 #define RTINSTANCE_LOG_TABLE(type, rtinstance, table, level, flags, ...) \
84  RTINSTANCE_LOG_INTERNAL(Table##type, (rtinstance)->server(), rtinstance, \
85  level, flags, \
86  (rtinstance)->GetVirtualNetworkName(), \
87  (rtinstance)->name(), (table)->name(), \
88  Address::FamilyToString((table)->family()), \
89  ##__VA_ARGS__); \
90 
91 #define ROUTING_INSTANCE_COLLECTOR_INFO(info) \
92 do { \
93  if (LoggingDisabled()) break; \
94  ROUTING_INSTANCE_COLLECTOR_SEND(info); \
95 } while (false)
96 
97 #endif // SRC_BGP_ROUTING_INSTANCE_ROUTING_INSTANCE_LOG_H_
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
Definition: sandesh_trace.h:18
SandeshTraceBufferPtr RoutingInstanceTraceBuf