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_level.h>
11
#include <ifm3d/common/logging/log_writer.h>
12
#include <ifm3d/common/logging/log_writer_console.h>
13
#include <ifm3d/common/logging/log_writer_console_colored.h>
14
#include <ifm3d/common/logging/log_formatter_text.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
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
inline
bool
50
ShouldLog(LogLevel log_level)
const
51
{
52
return
log_level <= this->log_level_;
53
}
54
55
inline
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:27
ifm3d
common
logging
logger.h
Generated by
1.8.17