Files
arcs/arcs-sdk/components/lisa_log/lisa_log_frontend_easylog.c
2026-08-13 16:50:52 +08:00

77 lines
2.2 KiB
C

#include "lisa_log.h"
#include "elog.h"
#include <stddef.h>
struct lisa_log_frontend_easylog_data {
void (*output_hook)(const uint8_t *log, uint32_t len);
};
static struct lisa_log_frontend_easylog_data lisa_log_frontend_easylog_data = {
.output_hook = NULL,
};
uint32_t elog_time_ms_get(void)
{
extern uint32_t SysTimeMsGet(void);
return SysTimeMsGet();
}
void elog_port_output_log(const char *log, size_t size)
{
if (lisa_log_frontend_easylog_data.output_hook) {
lisa_log_frontend_easylog_data.output_hook((const uint8_t *)log, size);
}
}
static int lisa_log_frontend_easylog_init(const struct lisa_log_frontend *frontend)
{
int ret = elog_init();
if (ret < 0) {
printf("[ERR]: elog_init error: %d\n", ret);
return ret;
}
elog_set_fmt(ELOG_LVL_ASSERT, ELOG_FMT_ALL);
elog_set_fmt(ELOG_LVL_ERROR, ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_TIME | ELOG_FMT_P_INFO | ELOG_FMT_T_INFO);
elog_set_fmt(ELOG_LVL_WARN, ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_TIME | ELOG_FMT_P_INFO | ELOG_FMT_T_INFO);
elog_set_fmt(ELOG_LVL_INFO, ELOG_FMT_LVL | ELOG_FMT_TAG | ELOG_FMT_TIME | ELOG_FMT_P_INFO | ELOG_FMT_T_INFO);
elog_set_fmt(ELOG_LVL_DEBUG, ELOG_FMT_ALL);
elog_set_fmt(ELOG_LVL_VERBOSE, ELOG_FMT_ALL);
elog_start();
syslog_hook_set(elog_raw_output_v);
return 0;
}
static void elog_port_output_hook_set(void (*output_hook)(const uint8_t *log, uint32_t len))
{
lisa_log_frontend_easylog_data.output_hook = output_hook;
}
static void lisa_log_frontend_flush(const struct lisa_log_frontend *frontend)
{
#if defined(CONFIG_EASYLOGGER_LOG_MODE_ASYNC)
extern size_t elog_port_read_log_then_output(void);
while (1) {
if (elog_port_read_log_then_output() == 0) {
break;
}
}
#endif
}
static void lisa_log_frontend_easylog_level_set(const struct lisa_log_frontend *frontend, int level)
{
elog_set_filter_lvl(level);
}
const struct lisa_log_frontend lisa_log_frontend_easylog = {
.name = "easylog",
.init = lisa_log_frontend_easylog_init,
.flush = lisa_log_frontend_flush,
.output_hook_set = elog_port_output_hook_set,
.level_set = lisa_log_frontend_easylog_level_set,
.data = &lisa_log_frontend_easylog_data,
};