mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
log: Add a command to output a log record
Add a 'log rec' command which allows a log record to be manually output. This is useful for scripts which want full control over what is logged. It also permits easy testing of the log system. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
ad0e503991
commit
3fd24fa9ed
1 changed files with 40 additions and 1 deletions
41
cmd/log.c
41
cmd/log.c
|
@ -59,12 +59,49 @@ static int do_log_format(cmd_tbl_t *cmdtp, int flag, int argc,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int do_log_rec(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
{
|
||||
enum log_category_t cat;
|
||||
enum log_level_t level;
|
||||
const char *file;
|
||||
uint line;
|
||||
const char *func;
|
||||
const char *msg;
|
||||
char *end;
|
||||
|
||||
if (argc < 7)
|
||||
return CMD_RET_USAGE;
|
||||
cat = log_get_cat_by_name(argv[1]);
|
||||
level = simple_strtoul(argv[2], &end, 10);
|
||||
if (end == argv[2]) {
|
||||
level = log_get_level_by_name(argv[2]);
|
||||
|
||||
if (level == LOGL_NONE) {
|
||||
printf("Invalid log level '%s'\n", argv[2]);
|
||||
return CMD_RET_USAGE;
|
||||
}
|
||||
}
|
||||
if (level >= LOGL_MAX) {
|
||||
printf("Invalid log level %u\n", level);
|
||||
return CMD_RET_USAGE;
|
||||
}
|
||||
file = argv[3];
|
||||
line = simple_strtoul(argv[4], NULL, 10);
|
||||
func = argv[5];
|
||||
msg = argv[6];
|
||||
if (_log(cat, level, file, line, func, "%s\n", msg))
|
||||
return CMD_RET_FAILURE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static cmd_tbl_t log_sub[] = {
|
||||
U_BOOT_CMD_MKENT(level, CONFIG_SYS_MAXARGS, 1, do_log_level, "", ""),
|
||||
#ifdef CONFIG_LOG_TEST
|
||||
U_BOOT_CMD_MKENT(test, 2, 1, do_log_test, "", ""),
|
||||
#endif
|
||||
U_BOOT_CMD_MKENT(format, CONFIG_SYS_MAXARGS, 1, do_log_format, "", ""),
|
||||
U_BOOT_CMD_MKENT(rec, CONFIG_SYS_MAXARGS, 1, do_log_rec, "", ""),
|
||||
};
|
||||
|
||||
static int do_log(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||
|
@ -94,7 +131,9 @@ static char log_help_text[] =
|
|||
"log format <fmt> - set log output format. <fmt> is a string where\n"
|
||||
"\teach letter indicates something that should be displayed:\n"
|
||||
"\tc=category, l=level, F=file, L=line number, f=function, m=msg\n"
|
||||
"\tor 'default', equivalent to 'fm', or 'all' for all"
|
||||
"\tor 'default', equivalent to 'fm', or 'all' for all\n"
|
||||
"log rec <category> <level> <file> <line> <func> <message> - "
|
||||
"output a log record"
|
||||
;
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in a new issue