Currently, the dpdk log is out to stdout/stderr and syslog. The rte_openlog_stream could set an external FILE* stream, but it asks the consumer to give it a FILE* pointer. For C++ or other languages, it's hard to get a libc FILE*.
Support to set a hook method is another choice for this scenario. Change-Id: I3b2419cc2fe5256205daa8077fd8862a8e58fb6c Signed-off-by: Li Feng <fen...@smartx.com> --- v2: simplify the code. lib/librte_eal/include/rte_eal.h | 16 ++++++++++++++++ lib/librte_eal/linux/eal_log.c | 10 ++++++++++ 2 files changed, 26 insertions(+) diff --git a/lib/librte_eal/include/rte_eal.h b/lib/librte_eal/include/rte_eal.h index eaf6469e5..bd6cf554b 100644 --- a/lib/librte_eal/include/rte_eal.h +++ b/lib/librte_eal/include/rte_eal.h @@ -501,6 +501,22 @@ rte_eal_mbuf_user_pool_ops(void); const char * rte_eal_get_runtime_dir(void); +/** + * Usage function typedef used by the application usage function. + * + * Use this function typedef to define a logger formatter. + */ +typedef cookie_write_function_t rte_log_func_t; + +/** + * Set a customized logger. + * + * @param logf + * The customized logger function. + */ +void +rte_eal_set_log_func(rte_log_func_t *logf); + #ifdef __cplusplus } #endif diff --git a/lib/librte_eal/linux/eal_log.c b/lib/librte_eal/linux/eal_log.c index 43c8460bf..c0a7a12ab 100644 --- a/lib/librte_eal/linux/eal_log.c +++ b/lib/librte_eal/linux/eal_log.c @@ -60,3 +60,13 @@ rte_eal_log_init(const char *id, int facility) return 0; } + +/* + * Set the customized logger, it will override the default action, which is + * writing to syslog and stdout. + */ +void +rte_eal_set_log_func(rte_log_func_t *logf) +{ + console_log_func.write = logf; +} -- 2.29.2