Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

console log pretty #3180

Merged
merged 5 commits into from
Apr 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions hw/usb/tinyusb/dfu/syscfg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ syscfg.logs:
USBD_DFU_LOG:
module: MYNEWT_VAL(USBD_DFU_LOG_MODULE)
level: MYNEWT_VAL(USBD_DFU_LOG_LVL)
name: '"DFU"'


syscfg.vals.BOOT_LOADER:
Expand Down
1 change: 1 addition & 0 deletions hw/usb/tinyusb/msc_fat_view/syscfg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,4 @@ syscfg.logs:
MSC_FAT_VIEW_LOG:
module: MYNEWT_VAL(MSC_FAT_VIEW_LOG_MOD)
level: MYNEWT_VAL(MSC_FAT_VIEW_LOG_LVL)
name: '"FATVIEW"'
1 change: 1 addition & 0 deletions sys/log/common/syscfg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,5 @@ syscfg.logs:
DFLT_LOG:
module: MYNEWT_VAL(DFLT_LOG_MOD)
level: MYNEWT_VAL(DFLT_LOG_LVL)
name: '"DEFAULT"'

44 changes: 8 additions & 36 deletions sys/log/full/src/log.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,48 +230,20 @@ const char *
log_module_get_name(uint8_t module)
{
int idx;
const char *name;

switch (module) {
#ifdef MYNEWT_VAL_DFLT_LOG_MOD
case MYNEWT_VAL(DFLT_LOG_MOD):
return "DEFAULT";
#endif
#ifdef MYNEWT_VAL_OS_LOG_MOD
case MYNEWT_VAL(OS_LOG_MOD):
return "OS";
#endif
#ifdef MYNEWT_VAL_BLE_LL_LOG_MOD
case MYNEWT_VAL(BLE_LL_LOG_MOD):
return "NIMBLE_CTLR";
#endif
#ifdef MYNEWT_VAL_BLE_HS_LOG_MOD
case MYNEWT_VAL(BLE_HS_LOG_MOD):
return "NIMBLE_HOST";
#endif
#ifdef MYNEWT_VAL_NFFS_LOG_MOD
case MYNEWT_VAL(NFFS_LOG_MOD):
return "NFFS";
#endif
#ifdef MYNEWT_VAL_REBOOT_LOG_MOD
case MYNEWT_VAL(REBOOT_LOG_MOD):
return "REBOOT";
#endif
#ifdef MYNEWT_VAL_OC_LOG_MOD
case MYNEWT_VAL(OC_LOG_MOD):
return "IOTIVITY";
#endif
#ifdef MYNEWT_VAL_TEST_LOG_MOD
case MYNEWT_VAL(TEST_LOG_MOD):
return "TEST";
#endif
default:
/* Find module defined in syscfg.logcfg sections */
name = logcfg_log_module_name(module);

if (name == NULL) {
/* not in syscfg.logcfg, find module registered with log_module_register() */
idx = log_module_find_idx(module);
if (idx != -1) {
return g_log_module_list[idx].name;
name = g_log_module_list[idx].name;
}
}

return NULL;
return name;
}

/**
Expand Down
87 changes: 86 additions & 1 deletion sys/log/full/src/log_console.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,18 +50,103 @@ log_console_get(void)
return &log_console;
}

#if MYNEWT_VAL(LOG_CONSOLE_PRETTY)
#define CSI "\x1b["
#define COLOR_BLUE "36m"
#define COLOR_YELLOW "33m"
#define COLOR_RED "31m"
#define COLOR_RED_BG "41m"

#if MYNEWT_VAL(LOG_CONSOLE_PRETTY_WITH_COLORS)
#define COLOR_DBG CSI COLOR_BLUE
#define COLOR_INF ""
#define COLOR_WRN CSI COLOR_YELLOW
#define COLOR_ERR CSI COLOR_RED
#define COLOR_CRI CSI COLOR_RED_BG
#define COLOR_RESET CSI "0m"
#else
#define COLOR_DBG ""
#define COLOR_INF ""
#define COLOR_WRN ""
#define COLOR_ERR ""
#define COLOR_CRI ""
#define COLOR_RESET ""
#endif

static const char * const log_level_color[] = {
COLOR_DBG,
COLOR_INF,
COLOR_WRN,
COLOR_ERR,
COLOR_CRI,
};

static const char * const log_level_str[] = {
"[DBG]",
"[INF]",
"[WRN]",
"[ERR]",
"[CRI]",
};

static void
log_console_print_hdr(const struct log_entry_hdr *hdr)
{
char module_num[10];
char image_hash_str[17];
char level_str_buf[13];
const char *level_str = "";
const char *module_name = NULL;
const char *color = "";
const char *color_off = "";

/* Find module defined in syscfg.logcfg sections */
module_name = log_module_get_name(hdr->ue_module);

if (module_name == NULL) {
module_name = module_num;
sprintf(module_num, "mod=%u", hdr->ue_module);
}
if (hdr->ue_flags & LOG_FLAGS_IMG_HASH) {
sprintf(image_hash_str, "[ih=0x%02x%02x%02x%02x]", hdr->ue_imghash[0], hdr->ue_imghash[1],
hdr->ue_imghash[2], hdr->ue_imghash[3]);
} else {
image_hash_str[0] = 0;
}
if (hdr->ue_level <= LOG_LEVEL_CRITICAL) {
if (MYNEWT_VAL(LOG_CONSOLE_PRETTY_WITH_COLORS)) {
color = log_level_color[hdr->ue_level];
color_off = COLOR_RESET;
} else {
level_str = log_level_str[hdr->ue_level];
}
} else {
sprintf(level_str_buf, "[level=%u]", hdr->ue_level);
}

if (MYNEWT_VAL(LOG_CONSOLE_PRETTY_WITH_TIMESTAMP)) {
unsigned int us = (unsigned int)hdr->ue_ts % 1000000;
unsigned int s = (unsigned int)(hdr->ue_ts / 1000000);
console_printf("[%u.%06u][%s%7s%s]%s%s ", s, us, color, module_name, color_off, level_str, image_hash_str);
} else {
console_printf("[%s%7s%s]%s%s ", color, module_name, color_off, level_str, image_hash_str);
}
}

#else
static void
log_console_print_hdr(const struct log_entry_hdr *hdr)
{
console_printf("[ts=" "%" PRIu64 "us, mod=%u level=%u ",
hdr->ue_ts, hdr->ue_module, hdr->ue_level);

if (hdr->ue_flags & LOG_FLAGS_IMG_HASH) {
console_printf("ih=0x%x%x%x%x", hdr->ue_imghash[0], hdr->ue_imghash[1],
console_printf("ih=0x%02x%02x%02x%02x", hdr->ue_imghash[0], hdr->ue_imghash[1],
hdr->ue_imghash[2], hdr->ue_imghash[3]);
}
console_printf("]");
}
#endif

static int
log_console_append_body(struct log *log, const struct log_entry_hdr *hdr,
Expand Down
19 changes: 19 additions & 0 deletions sys/log/full/syscfg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,22 @@ syscfg.defs:
description: 'Limits what level log messages are compiled in.'
value: 0

LOG_CONSOLE_PRETTY:
description: >
Use alternative formatting of mod log prints.
value: 0

LOG_CONSOLE_PRETTY_WITH_COLORS:
description: >
Use color for mod log levels.
value: 0

LOG_CONSOLE_PRETTY_WITH_TIMESTAMP:
description: >
Print timestamp in us.
Turned off by default when CONSOLE_TICKS is on.
value: 1

LOG_FLAGS_IMAGE_HASH:
description: >
Enable logging of the first 4 bytes of the image hash. 0 - disable;
Expand Down Expand Up @@ -155,5 +171,8 @@ syscfg.defs:
the global index to be sequentially increasing for persisted logs.
value: 0

syscfg.vals.CONSOLE_TICKS:
LOG_CONSOLE_PRETTY_WITH_TIMESTAMP: 0

syscfg.vals.LOG_NEWTMGR:
LOG_MGMT: MYNEWT_VAL(LOG_MGMT)
Loading