Add log_fini() function to release all memory allocated by logging framework

This is e.g. quite useful to call at the end of test code, in order to
show that all memory allocated actually is released before exit().
diff --git a/src/logging.c b/src/logging.c
index b96e64a..4d6fd40 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -880,6 +880,21 @@
 	return 0;
 }
 
+/* \brief De-initialize the Osmocom logging core
+ * This function destroys all targets and releases associated memory */
+void log_fini(void)
+{
+	struct log_target *tar, *tar2;
+
+	llist_for_each_entry_safe(tar, tar2, &osmo_log_target_list, entry)
+		log_target_destroy(tar);
+
+	talloc_free(osmo_log_info);
+	osmo_log_info = NULL;
+	talloc_free(tall_log_ctx);
+	tall_log_ctx = NULL;
+}
+
 /*! \brief Check whether a log entry will be generated.
  *  \returns != 0 if a log entry might get generated by at least one target */
 int log_check_level(int subsys, unsigned int level)