diff --git a/include/osmocom/core/backtrace.h b/include/osmocom/core/backtrace.h
index 1ed089a..a24290c 100644
--- a/include/osmocom/core/backtrace.h
+++ b/include/osmocom/core/backtrace.h
@@ -2,5 +2,6 @@
 #define _OSMO_BACKTRACE_H_
 
 void osmo_generate_backtrace(void);
+void osmo_log_backtrace(int subsys, int level);
 
 #endif
diff --git a/src/backtrace.c b/src/backtrace.c
index 023671c..f0c3489 100644
--- a/src/backtrace.c
+++ b/src/backtrace.c
@@ -29,36 +29,64 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <osmocom/core/utils.h>
+#include <osmocom/core/logging.h>
 #include "config.h"
 
 #ifdef HAVE_EXECINFO_H
 #include <execinfo.h>
 
-/*! \brief Generate and print a call back-trace
- *
- * This function will generate a function call back-trace of the
- * current process and print it to stdout
- */
-void osmo_generate_backtrace(void)
+static void _osmo_backtrace(int use_printf, int subsys, int level)
 {
 	int i, nptrs;
 	void *buffer[100];
 	char **strings;
 
 	nptrs = backtrace(buffer, ARRAY_SIZE(buffer));
-	printf("backtrace() returned %d addresses\n", nptrs);
+	if (use_printf)
+		printf("backtrace() returned %d addresses\n", nptrs);
+	else
+		LOGP(subsys, level, "backtrace() returned %d addresses\n",
+		     nptrs);
 
 	strings = backtrace_symbols(buffer, nptrs);
 	if (!strings)
 		return;
 
-	for (i = 1; i < nptrs; i++)
-		printf("%s\n", strings[i]);
+	for (i = 1; i < nptrs; i++) {
+		if (use_printf)
+			printf("%s\n", strings[i]);
+		else
+			LOGP(subsys, level, "\t%s\n", strings[i]);
+	}
 
 	free(strings);
 }
+
+/*! \brief Generate and print a call back-trace
+ *
+ * This function will generate a function call back-trace of the
+ * current process and print it to stdout. */
+void osmo_generate_backtrace(void)
+{
+	_osmo_backtrace(1, 0, 0);
+}
+
+/*! \brief Generate and log a call back-trace
+ *
+ * This function will generate a function call back-trace of the
+ * current process and log it to the specified subsystem and
+ * level using the libosmocore logging subsystem */
+void osmo_log_backtrace(int subsys, int level)
+{
+	_osmo_backtrace(0, subsys, level);
+}
 #else
 void osmo_generate_backtrace(void)
 {
+	fprintf(stderr, "This platform has no backtrace function\n");
+}
+void osmo_log_backtrace(int subsys, int level)
+{
+	LOGP(subsys, level, "This platform has no backtrace function\n");
 }
 #endif
