UTILLib 2.0
Common C++ library with utilities.
Loading...
Searching...
No Matches
logtolist.h
1/*
2 * Copyright 2025 Ingemar Hedvall
3 * SPDX-License-Identifier: MIT
4 */
5
6#pragma once
7
8#include <algorithm>
9#include <cstdint>
10#include <deque>
11#include <mutex>
12#include <string>
13
14#include "util/ilogger.h"
15#include "util/logmessage.h"
16
17namespace util::log {
18
19class LogToList : public ILogger {
20 public:
21 LogToList() = delete;
22 explicit LogToList(std::string name);
23
24 [[nodiscard]] const std::string& Name() const { return name_; }
25
26 void MaxSize(size_t max_size);
27 [[nodiscard]] size_t MaxSize() const;
28
29 void AddLogMessage(const LogMessage& message) override;
30 [[nodiscard]] bool HasLogFile() const override;
31
32 [[nodiscard]] size_t Size() const;
33 [[nodiscard]] size_t ChangeNumber() const;
34 [[nodiscard]] LogMessage GetLogMessage(size_t index) const;
35
36 private:
37 std::string name_;
38 size_t max_size_ = 10'000;
39
40 mutable std::mutex list_mutex_;
41 std::deque<LogMessage> log_list_;
42 size_t change_number_ = 0;
43};
44
45} // namespace util::log
ILogger()=default
Constructor.
bool HasLogFile() const override
Returns true if the logger has file.
void AddLogMessage(const LogMessage &message) override
Handle a log message.
Defines an interface against a generic logger.
The log namespace is used for log related classes and functions.
Definition idirectory.h:18
@ LogToList
Logs to an internal list.
Definition ilogger.h:27
Definition logmessage.h:27