rby1-sdk
Loading...
Searching...
No Matches
log.h
1#pragma once
2
3#include <ctime>
4#include <iomanip>
5#include <ostream>
6#include <string>
7
8#include "export.h"
9
10namespace rb {
11
12struct RBY1_SDK_API Log {
13 enum class Level {
14 kTrace = 0, //
15 kDebug, //
16 kInfo, //
17 kWarn, //
18 kError, //
19 kCritical //
20 };
21
22 struct timespec timestamp {};
23
24 struct timespec robot_system_timestamp {};
25
26 Level level;
27
28 std::string message;
29};
30
31RBY1_SDK_API inline std::string to_string(const Log::Level& level) {
32 switch (level) {
33 case Log::Level::kTrace:
34 return "Trace";
35 case Log::Level::kDebug:
36 return "Debug";
37 case Log::Level::kInfo:
38 return "Info";
39 case Log::Level::kWarn:
40 return "Warn";
41 case Log::Level::kError:
42 return "Error";
43 case Log::Level::kCritical:
44 return "Critical";
45 }
46 return "";
47}
48
49} // namespace rb
50
51RBY1_SDK_API inline std::ostream& operator<<(std::ostream& out, const rb::Log::Level& level) {
52 out << rb::to_string(level);
53
54 return out;
55}
56
57RBY1_SDK_API inline std::ostream& operator<<(std::ostream& out, const rb::Log& log) {
58 out << "[" << log.timestamp.tv_sec << ".";
59 out << std::setw(9) << std::setfill('0') << log.timestamp.tv_nsec << "] ";
60
61 out << "[" << log.robot_system_timestamp.tv_sec << ".";
62 out << std::setw(9) << std::setfill('0') << log.robot_system_timestamp.tv_nsec << "] ";
63
64 out << "[" << log.level << "] ";
65
66 out << log.message;
67
68 return out;
69}
Definition log.h:22
Definition log.h:12