ifm3d
log_entry.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_LOG_ENTRY_H
8 #define IFM3D_COMMON_LOGGING_LOG_ENTRY_H
9 
10 #include <cstdarg>
11 #include <string>
12 #include <utility>
13 
14 #include <ifm3d/common/logging/log_level.h>
15 #include <ifm3d/common/logging/time.h>
16 
17 namespace ifm3d
18 {
19  class LogEntry
20  {
21  public:
22  LogEntry(std::string message,
23  LogLevel log_level,
24  const char* file,
25  const char* function,
26  size_t line)
27  : _time(logging_clock::now()),
28  _log_level(log_level),
29  _message(std::move(message)),
30  _line(line),
31  _func(function),
32  _file(file)
33  {}
34 
35  [[nodiscard]] const logging_timepoint&
36  GetTime() const
37  {
38  return _time;
39  }
40 
41  [[nodiscard]] LogLevel
42  GetLogLevel() const
43  {
44  return _log_level;
45  }
46 
47  [[nodiscard]] size_t
48  GetLine() const
49  {
50  return _line;
51  }
52 
53  [[nodiscard]] const char*
54  GetMessage() const
55  {
56  return _message.c_str();
57  }
58 
59  [[nodiscard]] const char*
60  GetFunc() const
61  {
62  return _func;
63  }
64 
65  [[nodiscard]] const char*
66  GetFile() const
67  {
68  return _file;
69  }
70 
71  private:
72  logging_timepoint _time;
73  LogLevel _log_level;
74  std::string _message;
75  size_t _line;
76  const char* _func;
77  const char* _file;
78  };
79 }
80 
81 #endif // IFM3D_COMMON_LOGGING_LOG_ENTRY_H
ifm3d::LogEntry
Definition: log_entry.h:19