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