logging: add new log_targets_reopen() function
This function will re-open all existing log files in the application,
praticularly useful for SIGHUP handlers in case of logrotate
diff --git a/include/osmocom/core/logging.h b/include/osmocom/core/logging.h
index fa3365a..1d57e22 100644
--- a/include/osmocom/core/logging.h
+++ b/include/osmocom/core/logging.h
@@ -203,6 +203,7 @@
struct log_target *log_target_create_syslog(const char *ident, int option,
int facility);
int log_target_file_reopen(struct log_target *tgt);
+int log_targets_reopen(void);
void log_add_target(struct log_target *target);
void log_del_target(struct log_target *target);
diff --git a/src/logging.c b/src/logging.c
index eab8bdf..ffe6ecf 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -597,6 +597,26 @@
return 0;
}
+/*! \brief close and re-open a log file (for log file rotation) */
+int log_targets_reopen(void)
+{
+ struct log_target *tar;
+ int rc = 0;
+
+ llist_for_each_entry(tar, &osmo_log_target_list, entry) {
+ switch (tar->type) {
+ case LOG_TGT_TYPE_FILE:
+ if (log_target_file_reopen(tar) < 0)
+ rc = -1;
+ break;
+ default:
+ break;
+ }
+ }
+
+ return rc;
+}
+
/*! \brief Generates the logging command string for VTY
* \param[in] unused_info Deprecated parameter, no longer used!
*/