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_timer_t timer; 20 } nxt_log_moderation_t; 21 22 23 #define NXT_LOG_MODERATION 0, -1, 0, 0, NXT_TIMER 24 25 26 #define nxt_log_alert_moderate(_mod, _log, ...) \ 27 do { \ 28 nxt_log_t *_log_ = _log; \ 29 \ 30 if (nxt_log_moderate_allow(_mod)) { \ 31 _log_->handler(NXT_LOG_ALERT, _log_, __VA_ARGS__); \ 32 } \ 33 } while (0) 34 35 36 #define nxt_log_moderate(_mod, _level, _log, ...) \ 37 do { \ 38 nxt_log_t *_log_ = _log; \ 39 \ 40 if (_log_->level >= (_level) && nxt_log_moderate_allow(_mod)) { \ 41 _log_->handler(_level, _log_, __VA_ARGS__); \ 42 } \ 43 } while (0) 44 45 46 nxt_bool_t nxt_log_moderate_allow(nxt_log_moderation_t *mod); 47 48 49 #endif /* _NXT_LOG_MODERATION_H_INCLUDED_ */ 50