Cogs.Core
ThrottledConsumer.h
1#pragma once
2
3#include "Consumer.h"
4#include "Logger.h"
5
6#include <map>
7#include <string>
8
9namespace Cogs {
10 namespace Logging {
17 class COGSFOUNDATION_API ThrottledConsumer : public Consumer {
18 public:
19 static void setEnabled(bool enable);
20 virtual void consumeMessage(const char* source, Category category, uint32_t errorNumber, const char * message, const char* filename, int lineNumber) override;
21 void flush(bool flushAll = true);
22
23 protected:
24 struct Message {
25 std::string message;
26 std::string source;
27 int count = 0;
28 int64_t outputTime = 0;
29 const char* file = nullptr;
30 int line = 0;
31 Category category = Category::Trace;
32 };
33
34 private:
35 using MessageMap = std::map<size_t, Message>;
36
37 MessageMap messages;
38 Mutex messagesMutex;
39
40 virtual void outputMessage(const std::string& prefix, const Message& message) = 0;
41 };
42 }
43}
Consumer is the base class for objects that want to consume log messages through the LogManager.
Definition: Consumer.h:18
ThrottledConsumer is a log message consumer that attempts to throttle messages to reduce log spam.
void consumeMessage(const char *source, Category category, uint32_t errorNumber, const char *filename, int lineNumber, _Printf_format_string_ const char *fmt, va_list argptr)
Forwards the incoming log message to all interested consumers.
Definition: LogManager.cpp:49
Category
Logging categories used to filter log messages.
Definition: LogManager.h:31
Contains all Cogs related functionality.
Definition: FieldSetter.h:23
std::string message
Message to be output.
std::string source
Source of this message.