xref: /unit/src/nxt_log_moderation.h (revision 2084:7d479274f334)
10Sigor@sysoev.ru 
20Sigor@sysoev.ru /*
30Sigor@sysoev.ru  * Copyright (C) Igor Sysoev
40Sigor@sysoev.ru  * Copyright (C) NGINX, Inc.
50Sigor@sysoev.ru  */
60Sigor@sysoev.ru 
70Sigor@sysoev.ru #ifndef _NXT_LOG_MODERATION_H_INCLUDED_
80Sigor@sysoev.ru #define _NXT_LOG_MODERATION_H_INCLUDED_
90Sigor@sysoev.ru 
100Sigor@sysoev.ru 
110Sigor@sysoev.ru typedef struct {
120Sigor@sysoev.ru     uint32_t               level;
130Sigor@sysoev.ru     uint32_t               limit;
140Sigor@sysoev.ru     const char             *msg;
150Sigor@sysoev.ru     nxt_thread_spinlock_t  lock;
160Sigor@sysoev.ru     nxt_pid_t              pid;
170Sigor@sysoev.ru     nxt_uint_t             count;
180Sigor@sysoev.ru     nxt_time_t             last;
196Sigor@sysoev.ru     nxt_timer_t            timer;
200Sigor@sysoev.ru } nxt_log_moderation_t;
210Sigor@sysoev.ru 
220Sigor@sysoev.ru 
236Sigor@sysoev.ru #define NXT_LOG_MODERATION  0, -1, 0, 0, NXT_TIMER
240Sigor@sysoev.ru 
250Sigor@sysoev.ru 
26*2084Salx.manpages@gmail.com #define nxt_log_alert_moderate(_mod, _log, ...)                               \
27564Svbart@nginx.com     do {                                                                      \
28564Svbart@nginx.com         nxt_log_t  *_log_ = _log;                                             \
29564Svbart@nginx.com                                                                               \
30564Svbart@nginx.com         if (nxt_log_moderate_allow(_mod)) {                                   \
31564Svbart@nginx.com             _log_->handler(NXT_LOG_ALERT, _log_, __VA_ARGS__);                \
32564Svbart@nginx.com         }                                                                     \
33564Svbart@nginx.com     } while (0)
34564Svbart@nginx.com 
35564Svbart@nginx.com 
36*2084Salx.manpages@gmail.com #define nxt_log_moderate(_mod, _level, _log, ...)                             \
370Sigor@sysoev.ru     do {                                                                      \
380Sigor@sysoev.ru         nxt_log_t  *_log_ = _log;                                             \
390Sigor@sysoev.ru                                                                               \
400Sigor@sysoev.ru         if (_log_->level >= (_level) && nxt_log_moderate_allow(_mod)) {       \
410Sigor@sysoev.ru             _log_->handler(_level, _log_, __VA_ARGS__);                       \
420Sigor@sysoev.ru         }                                                                     \
430Sigor@sysoev.ru     } while (0)
440Sigor@sysoev.ru 
450Sigor@sysoev.ru 
460Sigor@sysoev.ru nxt_bool_t nxt_log_moderate_allow(nxt_log_moderation_t *mod);
470Sigor@sysoev.ru 
480Sigor@sysoev.ru 
490Sigor@sysoev.ru #endif /* _NXT_LOG_MODERATION_H_INCLUDED_ */
50