FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
log.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018 Cisco and/or its affiliates.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at:
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef included_vlib_log_h
17 #define included_vlib_log_h
18 
19 #include <vppinfra/types.h>
20 
21 #define foreach_vlib_log_level \
22  _(0, EMERG, emerg) \
23  _(1, ALERT, alert) \
24  _(2, CRIT, crit) \
25  _(3, ERR, err) \
26  _(4, WARNING, warn) \
27  _(5, NOTICE, notice) \
28  _(6, INFO, info) \
29  _(7, DEBUG, debug) \
30  _(8, DISABLED, disabled)
31 
32 typedef enum
33 {
34 #define _(n,uc,lc) VLIB_LOG_LEVEL_##uc = n,
36 #undef _
38 
39 typedef struct
40 {
46 
47 typedef struct
48 {
50  u8 *name;
51  // level of log messages kept for this subclass
53  // level of log messages sent to syslog for this subclass
55  // flag saying whether this subclass is logged to syslog
61 
62 typedef struct
63 {
65  u8 *name;
68 
69 typedef struct
70 {
73  int size, next, count;
74 
75  /* our own log class */
77 
83 
84  /* time zero */
85  struct timeval time_zero_timeval;
87 
89 
91 
92 vlib_log_class_t vlib_log_register_class (char *vlass, char *subclass);
94 vlib_log_register_class_rate_limit (char *class, char *subclass,
95  u32 rate_limit);
97 void vlib_log (vlib_log_level_t level, vlib_log_class_t class, char *fmt,
98  ...);
99 int last_log_entry ();
100 u8 *format_vlib_log_class (u8 * s, va_list * args);
101 
102 #define vlib_log_emerg(...) vlib_log(VLIB_LOG_LEVEL_EMERG, __VA_ARGS__)
103 #define vlib_log_alert(...) vlib_log(VLIB_LOG_LEVEL_ALERT, __VA_ARGS__)
104 #define vlib_log_crit(...) vlib_log(VLIB_LOG_LEVEL_CRIT, __VA_ARGS__)
105 #define vlib_log_err(...) vlib_log(VLIB_LOG_LEVEL_ERR, __VA_ARGS__)
106 #define vlib_log_warn(...) vlib_log(VLIB_LOG_LEVEL_WARNING, __VA_ARGS__)
107 #define vlib_log_notice(...) vlib_log(VLIB_LOG_LEVEL_NOTICE, __VA_ARGS__)
108 #define vlib_log_info(...) vlib_log(VLIB_LOG_LEVEL_INFO, __VA_ARGS__)
109 #define vlib_log_debug(...) vlib_log(VLIB_LOG_LEVEL_DEBUG, __VA_ARGS__)
110 
111 #endif /* included_vlib_log_h */
112 
113 /*
114  * fd.io coding-style-patch-verification: ON
115  *
116  * Local Variables:
117  * eval: (c-set-style "gnu")
118  * End:
119  */
u8 count
Definition: dhcp.api:208
vlib_log_entry_t * entries
Definition: log.h:71
vlib_log_level_t level
Definition: log.h:52
u8 * format_vlib_log_class(u8 *s, va_list *args)
Definition: log.c:73
vlib_log_level_t syslog_level
Definition: log.h:54
vlib_log_class_data_t * classes
Definition: log.h:72
vlib_log_class_t vlib_log_register_class(char *vlass, char *subclass)
Definition: log.c:209
f64 timestamp
Definition: log.h:43
unsigned char u8
Definition: types.h:56
double f64
Definition: types.h:142
u32 indent
Definition: log.h:82
u32 vlib_log_class_t
Definition: vlib.h:51
unsigned int u32
Definition: types.h:88
int default_log_level
Definition: log.h:79
vlib_log_class_t log_class
Definition: log.h:76
#define foreach_vlib_log_level
Definition: log.h:21
int default_syslog_log_level
Definition: log.h:80
int size
Definition: log.h:73
void vlib_log(vlib_log_level_t level, vlib_log_class_t class, char *fmt,...)
Definition: log.c:87
vlib_log_subclass_data_t * subclasses
Definition: log.h:66
vlib_log_class_t vlib_log_register_class_rate_limit(char *class, char *subclass, u32 rate_limit)
Definition: log.c:216
int default_rate_limit
Definition: log.h:78
Definition: log.h:39
vlib_log_level_t
Definition: log.h:32
vlib_log_level_t level
Definition: log.h:41
f64 time_zero
Definition: log.h:86
u32 vlib_log_get_indent()
Definition: log.c:240
vlib_log_main_t log_main
Definition: log.c:21
f64 last_event_timestamp
Definition: log.h:56
int last_log_entry()
Definition: log.c:30
u8 * string
Definition: log.h:44
int unthrottle_time
Definition: log.h:81