libxr 1.0
Want to be the best embedded framework
Loading...
Searching...
No Matches
logger.cpp
1#include "logger.hpp"
2
3#include <cstdarg>
4#include <cstdint>
5#include <cstdio>
6
7#include "libxr_def.hpp"
8#include "libxr_rw.hpp"
9#include "message.hpp"
10
11using namespace LibXR;
12
13static Topic log_topic;
14
16{
17 log_topic = Topic::CreateTopic<LogData>("/xr/log", nullptr, false, true);
18
19#if LIBXR_PRINTF_BUFFER_SIZE > 0
22 {
23 UNUSED(tp);
24
25 auto log = reinterpret_cast<LogData *>(log_data.addr_);
26
27 if (LIBXR_LOG_OUTPUT_LEVEL >= static_cast<uint8_t>(log->level) &&
29 {
31 }
32 };
33
35 log_topic.RegisterCallback(log_cb);
36#endif
37
38 initialized_ = true;
39}
40
41// NOLINTNEXTLINE
42void Logger::Publish(LogLevel level, const char *file, uint32_t line, const char *fmt,
43 ...)
44{
45 if (!initialized_)
46 {
47 Init();
48 }
49 LogData data;
51 data.level = level;
52 data.file = file;
53 data.line = line;
54
57 auto ans = vsnprintf(data.message, sizeof(data.message), fmt, args);
58 UNUSED(ans);
59 va_end(args);
60
61 log_topic.Publish(data);
62}
static Callback Create(FunType fun, ArgType arg)
创建一个新的回调对象,并绑定回调函数和参数。 Creates a new callback instance, binding a function and an argument.
Definition libxr_cb.hpp:142
static void Init()
初始化日志主题 / Initialize the log topic
Definition logger.cpp:15
static void Publish(LogLevel level, const char *file, uint32_t line, const char *fmt,...)
发布一条日志 / Publish a log message
Definition logger.cpp:42
static void PrintToTerminal(const LogData &data)
打印日志到终端 / Print log to terminal
Definition logger.hpp:69
原始数据封装类。 A class for encapsulating raw data.
static WritePort * write_
Write port instance. 写入端口。
Definition libxr_rw.hpp:694
static uint32_t GetTime()
获取当前系统时间(毫秒) Gets the current system time in milliseconds
Definition thread.cpp:16
表示毫秒级时间戳的类。Class representing a timestamp in milliseconds.
主题(Topic)管理类 / Topic management class
Definition message.hpp:29
void Publish(Data &data)
发布数据 Publishes data
Definition message.hpp:648
void RegisterCallback(Callback< RawData & > &cb)
注册回调函数 Registers a callback function
Definition message.hpp:476
bool Writable()
判断端口是否可写。 Checks whether the port is writable.
Definition libxr_rw.hpp:560
LibXR Color Control Library / LibXR终端颜色控制库
constexpr auto min(T1 a, T2 b) -> typename std::common_type< T1, T2 >::type
计算两个数的最小值
LogLevel
日志级别枚举 / Log level enumeration
Definition logger.hpp:19
日志数据结构体 / Log data structure
Definition logger.hpp:32
uint32_t line
行号 / Line number
Definition logger.hpp:36
const char * file
文件名指针 / Source file name pointer
Definition logger.hpp:35
LogLevel level
日志级别 / Log level
Definition logger.hpp:34
TimestampMS timestamp
时间戳 / Timestamp
Definition logger.hpp:33
char message[XR_LOG_MESSAGE_MAX_LEN]
日志消息内容 / Log message content
Definition logger.hpp:37