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