diff --git a/devicemodel/core/main.c b/devicemodel/core/main.c index 90629f54f..64b332ea1 100644 --- a/devicemodel/core/main.c +++ b/devicemodel/core/main.c @@ -1073,5 +1073,6 @@ fail: vm_destroy(ctx); create_fail: uninit_hugetlb(); + deinit_loggers(); exit(ret); } diff --git a/devicemodel/include/log.h b/devicemodel/include/log.h index 056d07020..1c102bcab 100644 --- a/devicemodel/include/log.h +++ b/devicemodel/include/log.h @@ -29,6 +29,7 @@ struct logger_ops { }; int init_logger_setting(const char *opt); +void deinit_loggers(void); void output_log(uint8_t level, const char *fmt, ...); /* diff --git a/devicemodel/log/log.c b/devicemodel/log/log.c index 83ef222b1..be083e1e6 100644 --- a/devicemodel/log/log.c +++ b/devicemodel/log/log.c @@ -74,6 +74,17 @@ int init_logger_setting(const char *opt) return error; } +void deinit_loggers(void) +{ + struct logger_ops **pp_logger, *plogger; + + FOR_EACH_LOGGER(pp_logger) { + plogger = *pp_logger; + if (plogger->deinit) + plogger->deinit(); + } +} + void output_log(uint8_t level, const char *fmt, ...) { va_list args;