From 312ea054b414c9e12d74d865723ee7b59723eca4 Mon Sep 17 00:00:00 2001 From: Henrik Triem Date: Mon, 14 Sep 2020 17:09:11 +0200 Subject: [PATCH] WorkQueue: Allow choosing stats log level --- lib/base/workqueue.cpp | 6 ++++-- lib/base/workqueue.hpp | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/base/workqueue.cpp b/lib/base/workqueue.cpp index cacd17b76..3d34514e6 100644 --- a/lib/base/workqueue.cpp +++ b/lib/base/workqueue.cpp @@ -14,7 +14,7 @@ using namespace icinga; std::atomic WorkQueue::m_NextID(1); boost::thread_specific_ptr l_ThreadWorkQueue; -WorkQueue::WorkQueue(size_t maxItems, int threadCount) +WorkQueue::WorkQueue(size_t maxItems, int threadCount, LogSeverity statsLogLevel) : m_ID(m_NextID++), m_ThreadCount(threadCount), m_MaxItems(maxItems), m_TaskStats(15 * 60) { @@ -25,6 +25,8 @@ WorkQueue::WorkQueue(size_t maxItems, int threadCount) m_StatusTimer->SetInterval(10); m_StatusTimer->OnTimerExpired.connect(std::bind(&WorkQueue::StatusTimerHandler, this)); m_StatusTimer->Start(); + + m_StatsLogLevel = statsLogLevel; } WorkQueue::~WorkQueue() @@ -216,7 +218,7 @@ void WorkQueue::StatusTimerHandler() /* Log if there are pending items, or 5 minute timeout is reached. */ if (pending > 0 || m_StatusTimerTimeout < now) { - Log(LogInformation, "WorkQueue") + Log(m_StatsLogLevel, "WorkQueue") << "#" << m_ID << " (" << m_Name << ") " << "items: " << pending << ", " << "rate: " << std::setw(2) << GetTaskCount(60) / 60.0 << "/s " diff --git a/lib/base/workqueue.hpp b/lib/base/workqueue.hpp index bc84d9176..31b916381 100644 --- a/lib/base/workqueue.hpp +++ b/lib/base/workqueue.hpp @@ -6,6 +6,7 @@ #include "base/i2-base.hpp" #include "base/timer.hpp" #include "base/ringbuffer.hpp" +#include "base/logger.hpp" #include #include #include @@ -52,7 +53,7 @@ class WorkQueue public: typedef std::function ExceptionCallback; - WorkQueue(size_t maxItems = 0, int threadCount = 1); + WorkQueue(size_t maxItems = 0, int threadCount = 1, LogSeverity statsLogLevel = LogInformation); ~WorkQueue(); void SetName(const String& name); @@ -138,6 +139,8 @@ private: void StatusTimerHandler(); void RunTaskFunction(const TaskFunction& func); + + LogSeverity m_StatsLogLevel; }; }