xref: /unit/src/nxt_log_moderation.h (revision 0:a63ceefd6ab0)
1 
2 /*
3  * Copyright (C) Igor Sysoev
4  * Copyright (C) NGINX, Inc.
5  */
6 
7 #ifndef _NXT_LOG_MODERATION_H_INCLUDED_
8 #define _NXT_LOG_MODERATION_H_INCLUDED_
9 
10 
11 typedef struct {
12     uint32_t               level;
13     uint32_t               limit;
14     const char             *msg;
15     nxt_thread_spinlock_t  lock;
16     nxt_pid_t              pid;
17     nxt_uint_t             count;
18     nxt_time_t             last;
19     nxt_event_timer_t      timer;
20 } nxt_log_moderation_t;
21 
22 
23 #define NXT_LOG_MODERATION  0, -1, 0, 0, NXT_EVENT_TIMER
24 
25 
26 #define                                                                       \
27 nxt_log_moderate(_mod, _level, _log, ...)                                     \
28     do {                                                                      \
29         nxt_log_t  *_log_ = _log;                                             \
30                                                                               \
31         if (_log_->level >= (_level) && nxt_log_moderate_allow(_mod)) {       \
32             _log_->handler(_level, _log_, __VA_ARGS__);                       \
33         }                                                                     \
34     } while (0)
35 
36 
37 nxt_bool_t nxt_log_moderate_allow(nxt_log_moderation_t *mod);
38 
39 
40 #endif /* _NXT_LOG_MODERATION_H_INCLUDED_ */
41