ifm3d
logger.h
1
// -*- c++ -*-
2
/*
3
* Copyright 2023-present ifm electronic, gmbh
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
7
#ifndef IFM3D_COMMON_LOGGING_LOGGER_H
8
#define IFM3D_COMMON_LOGGING_LOGGER_H
9
10
#include <ifm3d/common/logging/log_formatter_text.h>
11
#include <ifm3d/common/logging/log_level.h>
12
#include <ifm3d/common/logging/log_writer.h>
13
#include <ifm3d/common/logging/log_writer_console.h>
14
#include <ifm3d/common/logging/log_writer_console_colored.h>
15
#include <ifm3d/common/module_common.h>
16
17
#include <memory>
18
19
namespace
ifm3d
20
{
21
class
IFM3D_EXPORT
Logger
22
{
23
public
:
24
Logger
(LogLevel log_level = LogLevel::Warning)
25
: _log_level(log_level),
26
_writer(std::make_shared<
LogWriterConsoleColored<LogFormatterText>
>(
27
Output::StdErr))
28
{}
29
30
Logger
&
31
SetWriter(std::shared_ptr<LogWriter> writer)
32
{
33
this->_writer = writer;
34
return
*
this
;
35
}
36
37
[[nodiscard]] LogLevel
38
GetLogLevel()
const
39
{
40
return
this->_log_level;
41
}
42
43
void
44
SetLogLevel(LogLevel log_level)
45
{
46
this->_log_level = log_level;
47
}
48
49
[[nodiscard]]
bool
50
ShouldLog(LogLevel log_level)
const
51
{
52
return
log_level <= this->_log_level;
53
}
54
55
void
56
Write(
const
LogEntry
& entry)
57
{
58
if
(this->_writer)
59
{
60
this->_writer->Write(entry);
61
}
62
}
63
64
static
Logger
& Get();
65
66
private
:
67
LogLevel _log_level;
68
std::shared_ptr<LogWriter> _writer;
69
};
70
71
}
72
73
#endif // IFM3D_COMMON_LOGGING_LOGGER_H
ifm3d::Logger
Definition:
logger.h:21
ifm3d::LogEntry
Definition:
log_entry.h:19
ifm3d::LogWriterConsoleColored
Definition:
log_writer_console_colored.h:28
ifm3d
common
logging
logger.h
Generated by
1.8.17