ifm3d
log_level.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_LEVEL_H
8 #define IFM3D_COMMON_LOGGING_LOG_LEVEL_H
9 
10 #include <cctype>
11 #include <cstdint>
12 
13 namespace ifm3d
14 {
15  enum class LogLevel : std::uint8_t
16  {
17  None = 0,
18  Critical = 1,
19  Error = 2,
20  Warning = 3,
21  Info = 4,
22  Debug = 5,
23  Verbose = 6
24  };
25 
26  inline const char*
27  log_level_to_string(LogLevel severity)
28  {
29  switch (severity)
30  {
31  case LogLevel::Critical:
32  return "CRITICAL";
33  case LogLevel::Error:
34  return "ERROR";
35  case LogLevel::Warning:
36  return "WARN";
37  case LogLevel::Info:
38  return "INFO";
39  case LogLevel::Debug:
40  return "DEBUG";
41  case LogLevel::Verbose:
42  return "VERBOSE";
43  default:
44  return "NONE";
45  }
46  }
47 
48  inline LogLevel
49  log_level_from_string(const char* str)
50  {
51  switch (std::toupper(str[0]))
52  {
53  case 'C':
54  return LogLevel::Critical;
55  case 'E':
56  return LogLevel::Error;
57  case 'W':
58  return LogLevel::Warning;
59  case 'I':
60  return LogLevel::Info;
61  case 'D':
62  return LogLevel::Debug;
63  case 'V':
64  return LogLevel::Verbose;
65  default:
66  return LogLevel::None;
67  }
68  }
69 }
70 #endif // IFM3D_COMMON_LOGGING_LOG_LEVEL_H