mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-06 06:55:07 +00:00
Forward log and log level to custom bh_log callback (#3070)
Follow-up on #2907. The log level is needed in the host embedder to better integrate with the embedder's logger. Allow the developer to customize his bh_log callback with `cmake -DWAMR_BH_LOG=<log_callback>`, and update sample/basic to show the usage.
This commit is contained in:
parent
1505e61704
commit
3fcd79867d
|
@ -338,6 +338,9 @@ endif ()
|
||||||
if (DEFINED WAMR_BH_VPRINTF)
|
if (DEFINED WAMR_BH_VPRINTF)
|
||||||
add_definitions (-DBH_VPRINTF=${WAMR_BH_VPRINTF})
|
add_definitions (-DBH_VPRINTF=${WAMR_BH_VPRINTF})
|
||||||
endif ()
|
endif ()
|
||||||
|
if (DEFINED WAMR_BH_LOG)
|
||||||
|
add_definitions (-DBH_LOG=${WAMR_BH_LOG})
|
||||||
|
endif ()
|
||||||
if (WAMR_DISABLE_APP_ENTRY EQUAL 1)
|
if (WAMR_DISABLE_APP_ENTRY EQUAL 1)
|
||||||
message (" WAMR application entry functions excluded")
|
message (" WAMR application entry functions excluded")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
|
@ -17,6 +17,7 @@ bh_log_set_verbose_level(uint32 level)
|
||||||
log_verbose_level = level;
|
log_verbose_level = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef BH_LOG
|
||||||
void
|
void
|
||||||
bh_log(LogLevel log_level, const char *file, int line, const char *fmt, ...)
|
bh_log(LogLevel log_level, const char *file, int line, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
|
@ -56,6 +57,7 @@ bh_log(LogLevel log_level, const char *file, int line, const char *fmt, ...)
|
||||||
|
|
||||||
os_printf("\n");
|
os_printf("\n");
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static uint32 last_time_ms = 0;
|
static uint32 last_time_ms = 0;
|
||||||
static uint32 total_time_ms = 0;
|
static uint32 total_time_ms = 0;
|
||||||
|
|
|
@ -38,8 +38,14 @@ typedef enum {
|
||||||
void
|
void
|
||||||
bh_log_set_verbose_level(uint32 level);
|
bh_log_set_verbose_level(uint32 level);
|
||||||
|
|
||||||
|
#ifndef BH_LOG
|
||||||
void
|
void
|
||||||
bh_log(LogLevel log_level, const char *file, int line, const char *fmt, ...);
|
bh_log(LogLevel log_level, const char *file, int line, const char *fmt, ...);
|
||||||
|
#else
|
||||||
|
void
|
||||||
|
BH_LOG(uint32 log_level, const char *file, int line, const char *fmt, ...);
|
||||||
|
#define bh_log BH_LOG
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef BH_PLATFORM_NUTTX
|
#ifdef BH_PLATFORM_NUTTX
|
||||||
|
|
||||||
|
|
|
@ -190,7 +190,17 @@ Currently we only profile the memory consumption of module, module_instance and
|
||||||
> }
|
> }
|
||||||
> ```
|
> ```
|
||||||
>
|
>
|
||||||
> and then use `cmake -DWAMR_BH_VPRINTF=my_vprintf ..` to pass the callback function, or add `BH_VPRINTF=my_vprintf` macro for the compiler, e.g. add line `add_defintions(-DBH_VPRINTF=my_vprintf)` in CMakeListst.txt.
|
> and then use `cmake -DWAMR_BH_VPRINTF=my_vprintf ..` to pass the callback function, or add `BH_VPRINTF=my_vprintf` macro for the compiler, e.g. add line `add_defintions(-DBH_VPRINTF=my_vprintf)` in CMakeListst.txt. See [basic sample](../samples/basic/src/main.c) for a usage example.
|
||||||
|
|
||||||
|
#### **WAMR_BH_LOG**=<log_callback>, default to disable if not set
|
||||||
|
> Note: if the log_callback function is provided by the developer, WAMR logs are redirected to such callback. For example:
|
||||||
|
> ```C
|
||||||
|
> void my_log(uint32 log_level, const char *file, int line, const char *fmt, ...)
|
||||||
|
> {
|
||||||
|
> /* Usage of custom logger */
|
||||||
|
> }
|
||||||
|
> ```
|
||||||
|
> See [basic sample](../samples/basic/src/main.c) for a usage example.
|
||||||
|
|
||||||
#### **Enable reference types feature**
|
#### **Enable reference types feature**
|
||||||
- **WAMR_BUILD_REF_TYPES**=1/0, default to disable if not set
|
- **WAMR_BUILD_REF_TYPES**=1/0, default to disable if not set
|
||||||
|
|
|
@ -21,7 +21,7 @@ echo "#####################build basic project"
|
||||||
cd ${CURR_DIR}
|
cd ${CURR_DIR}
|
||||||
mkdir -p cmake_build
|
mkdir -p cmake_build
|
||||||
cd cmake_build
|
cd cmake_build
|
||||||
cmake .. -DCMAKE_BUILD_TYPE=Debug
|
cmake .. -DCMAKE_BUILD_TYPE=Debug -DWAMR_BH_VPRINTF=my_vprintf -DWAMR_BH_LOG=my_log
|
||||||
make -j ${nproc}
|
make -j ${nproc}
|
||||||
if [ $? != 0 ];then
|
if [ $? != 0 ];then
|
||||||
echo "BUILD_FAIL basic exit as $?\n"
|
echo "BUILD_FAIL basic exit as $?\n"
|
||||||
|
|
|
@ -15,6 +15,30 @@ get_pow(int x, int y);
|
||||||
int32_t
|
int32_t
|
||||||
calculate_native(int32_t n, int32_t func1, int32_t func2);
|
calculate_native(int32_t n, int32_t func1, int32_t func2);
|
||||||
|
|
||||||
|
void
|
||||||
|
my_log(uint32 log_level, const char *file, int line, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
char buf[200];
|
||||||
|
snprintf(buf, 200,
|
||||||
|
log_level == WASM_LOG_LEVEL_VERBOSE ? "[WamrLogger - VERBOSE] %s"
|
||||||
|
: "[WamrLogger] %s",
|
||||||
|
fmt);
|
||||||
|
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, fmt);
|
||||||
|
vprintf(buf, ap);
|
||||||
|
va_end(ap);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
my_vprintf(const char *format, va_list ap)
|
||||||
|
{
|
||||||
|
/* Print in blue */
|
||||||
|
char buf[200];
|
||||||
|
snprintf(buf, 200, "\x1b[34m%s\x1b[0m", format);
|
||||||
|
return vprintf(buf, ap);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
print_usage(void)
|
print_usage(void)
|
||||||
{
|
{
|
||||||
|
@ -95,6 +119,7 @@ main(int argc, char *argv_main[])
|
||||||
printf("Init runtime environment failed.\n");
|
printf("Init runtime environment failed.\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
wasm_runtime_set_log_level(WASM_LOG_LEVEL_VERBOSE);
|
||||||
|
|
||||||
buffer = bh_read_file_to_buffer(wasm_path, &buf_size);
|
buffer = bh_read_file_to_buffer(wasm_path, &buf_size);
|
||||||
|
|
||||||
|
@ -103,7 +128,8 @@ main(int argc, char *argv_main[])
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
module = wasm_runtime_load(buffer, buf_size, error_buf, sizeof(error_buf));
|
module = wasm_runtime_load((uint8 *)buffer, buf_size, error_buf,
|
||||||
|
sizeof(error_buf));
|
||||||
if (!module) {
|
if (!module) {
|
||||||
printf("Load wasm module failed. error: %s\n", error_buf);
|
printf("Load wasm module failed. error: %s\n", error_buf);
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user