diff --git a/app_broker/CMakeLists.txt b/app_broker/CMakeLists.txt
index 3228ea8..caad0cf 100644
--- a/app_broker/CMakeLists.txt
+++ b/app_broker/CMakeLists.txt
@@ -1,5 +1,5 @@
 #-------------------------------------------------------------------------------
-# SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
+# Copyright (c) 2023-2024, Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -40,20 +40,6 @@
 # lib path
 set(APP_LIB_DIR                  ${CMAKE_CURRENT_LIST_DIR}/../lib)
 
-# TFM NS logging interface
-add_library(tfm_ns_log_msg_interface INTERFACE)
-
-target_include_directories(tfm_ns_log_msg_interface
-    INTERFACE
-        $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/../lib/log>
-        $<INSTALL_INTERFACE:${SPE_INSTALL_INTERFACE_INC}
-)
-
-target_compile_definitions(tfm_ns_log_msg_interface
-    INTERFACE
-        $<$<NOT:$<BOOL:${TFM_NS_LOG_DISABLE}>>:TFM_NS_LOG>
-)
-
 # OS wrapper library consists of the wrapper layer of RTOSes, such as RTX
 add_library(os_wrapper STATIC)
 
@@ -138,6 +124,29 @@
     )
 endif()
 
+# TF-M NS logging
+add_library(tfm_ns_log STATIC EXCLUDE_FROM_ALL)
+
+target_sources(tfm_ns_log
+    PRIVATE
+        ${APP_LIB_DIR}/log/tfm_log_raw.c
+)
+
+target_include_directories(tfm_ns_log
+    PUBLIC
+        ${APP_LIB_DIR}/log/
+)
+
+target_compile_definitions(tfm_ns_log
+    INTERFACE
+        $<$<NOT:$<BOOL:${TFM_NS_LOG_DISABLE}>>:TFM_NS_LOG>
+)
+
+target_link_libraries(tfm_ns_log
+    PRIVATE
+        platform_ns
+)
+
 ################## Update plaform_ns with NS settings #################
 
 target_include_directories(platform_ns
@@ -165,8 +174,6 @@
 )
 
 target_link_libraries(tfm_api_ns
-    INTERFACE
-        tfm_ns_log_msg_interface
     PRIVATE
         $<$<BOOL:${TFM_NS_MAILBOX_API}>:tfm_api_ns_mailbox>
         $<$<NOT:$<BOOL:${TFM_NS_MAILBOX_API}>>:tfm_api_ns_tz>
@@ -179,14 +186,12 @@
 
 target_sources(tfm_test_broker
     PRIVATE
-        assert.c
         main_ns.c
 )
 
 target_include_directories(tfm_test_broker
     PUBLIC
         .
-        ${APP_LIB_DIR}/log/
 )
 
 target_link_libraries(tfm_test_broker
@@ -196,6 +201,7 @@
     PUBLIC
         RTX_OS
         tfm_api_ns
+        tfm_ns_log
         $<$<BOOL:${TFM_NS_MAILBOX_API}>:ns_multi_core>
 )
 
diff --git a/app_broker/assert.c b/app_broker/assert.c
deleted file mode 100644
index 648fd6f..0000000
--- a/app_broker/assert.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#include <stddef.h>
-#include <assert.h>
-#include "tfm_tests_log_msg.h"
-
-#ifndef __ARMCC_VERSION
-void __assert_func(const char *file, int line, const char *func, const char *reason)
-{
-    LOG_MSG("Assertion failed: (%s), file %s, line %d\r\n", reason, file, line);
-
-    while (1) {
-        ;
-    }
-}
-#else /* __ARMCC_VERSION */
-void __assert_puts(const char *msg)
-{
-    LOG_MSG("%s\r\n", msg);
-
-    while (1) {
-        ;
-    }
-}
-#endif /* __ARMCC_VERSION*/
diff --git a/app_broker/main_ns.c b/app_broker/main_ns.c
index fc9c3b8..a387803 100644
--- a/app_broker/main_ns.c
+++ b/app_broker/main_ns.c
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
+ * Copyright (c) 2017-2022, Arm Limited. All rights reserved.
  * Copyright (c) 2022 Cypress Semiconductor Corporation (an Infineon company)
  * or an affiliate of Cypress Semiconductor Corporation. All rights reserved.
  *
@@ -19,7 +19,7 @@
 #include "tfm_multi_core_api.h"
 #include "tfm_ns_mailbox.h"
 #endif
-#include "tfm_tests_log_msg.h"
+#include "tfm_log.h"
 #include "uart_stdout.h"
 #if (CONFIG_TFM_FLOAT_ABI >= 1)
 #include "cmsis.h"
diff --git a/erpc/server/app/erpc_app.c b/erpc/server/app/erpc_app.c
index 264b873..341a0f0 100644
--- a/erpc/server/app/erpc_app.c
+++ b/erpc/server/app/erpc_app.c
@@ -1,11 +1,11 @@
 /*
- * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
+ * Copyright (c) 2017-2023, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
  */
 
-#include "tfm_tests_log_msg.h"
+#include "tfm_log.h"
 #include "erpc_server_start.h"
 #include "config_erpc_target.h"
 
diff --git a/erpc/tfm_reg_tests/CMakeLists.txt b/erpc/tfm_reg_tests/CMakeLists.txt
index 888c248..bb7688d 100644
--- a/erpc/tfm_reg_tests/CMakeLists.txt
+++ b/erpc/tfm_reg_tests/CMakeLists.txt
@@ -151,6 +151,10 @@
 # Config check in case additional test configs passed in via command line.
 include(${TFM_REG_TEST_ROOT}/config/check_config.cmake)
 
+# Dummy tfm_ns_log for the tfm_test_framework_ns library
+add_library(tfm_ns_log INTERFACE)
+
+set(USE_STDIO ON)
 add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../../lib/ext/qcbor ${CMAKE_BINARY_DIR}/lib/ext/qcbor)
 add_subdirectory(${TFM_REG_TEST_ROOT}/ns_regression      ${CMAKE_BINARY_DIR}/ns_regression)
 
diff --git a/lib/log/tfm_tests_log_msg.h b/lib/log/tfm_log.h
similarity index 64%
rename from lib/log/tfm_tests_log_msg.h
rename to lib/log/tfm_log.h
index deee64f..5d5e649 100644
--- a/lib/log/tfm_tests_log_msg.h
+++ b/lib/log/tfm_log.h
@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
+ * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -8,12 +8,12 @@
 #ifndef __TFM_LOG_H__
 #define __TFM_LOG_H__
 
-#include <stdio.h>
+#include "tfm_log_raw.h"
 
 /* Functions and macros in this file is for 'thread mode' usage. */
 
 #ifdef TFM_NS_LOG
-#define LOG_MSG(...) printf(__VA_ARGS__)
+#define LOG_MSG(...) tfm_log_printf(__VA_ARGS__)
 #else
 #define LOG_MSG(...)
 #endif
diff --git a/lib/log/tfm_log_raw.c b/lib/log/tfm_log_raw.c
new file mode 100644
index 0000000..61f75ca
--- /dev/null
+++ b/lib/log/tfm_log_raw.c
@@ -0,0 +1,170 @@
+/*
+ * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#include <stdarg.h>
+#include <stddef.h>
+#include <stdint.h>
+#include "uart_stdout.h"
+
+#define PRINT_BUFF_SIZE 32
+#define NUM_BUFF_SIZE 12
+
+struct formatted_buffer_t {
+    size_t pos;
+    char buf[PRINT_BUFF_SIZE];
+};
+
+const char hex_digits_lo[] = {'0', '1', '2', '3', '4', '5', '6', '7',
+                              '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
+const char hex_digits_up[] = {'0', '1', '2', '3', '4', '5', '6', '7',
+                              '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
+
+static void _tfm_flush_formatted_buffer(struct formatted_buffer_t *pb,
+                                        uint8_t data)
+{
+    pb->buf[pb->pos++] = data;
+    if (pb->pos >= PRINT_BUFF_SIZE) {
+        pb->pos = 0;
+        /* uart flush and print here. */
+        stdio_output_string(pb->buf, PRINT_BUFF_SIZE);
+    }
+}
+
+static int _tfm_string_output(struct formatted_buffer_t *pb,
+                              const char *str)
+{
+    int count = 0;
+
+    while (*str) {
+        _tfm_flush_formatted_buffer(pb, *str++);
+        count++;
+    }
+
+    return count;
+}
+
+static int _tfm_dec_num_output(struct formatted_buffer_t *pb,
+                               int32_t num, uint8_t sign)
+{
+    int count = 0;
+    uint8_t num_buff[NUM_BUFF_SIZE] = {0};
+    uint32_t number = (uint32_t)num;
+    uint32_t k = 0;
+
+    if (sign == 'd' && num < 0) {
+        _tfm_flush_formatted_buffer(pb, '-');
+        count++;
+        number = -num;
+    }
+
+    do {
+        num_buff[k++] = '0' + number % 10;
+        number /= 10;
+    } while (number);
+
+    while (k) {
+        _tfm_flush_formatted_buffer(pb, num_buff[--k]);
+        count++;
+    }
+
+    return count;
+}
+
+static int _tfm_hex_num_output(struct formatted_buffer_t *pb, uint32_t num,
+                               const char *hex_digits)
+{
+    int count = 0;
+    uint8_t num_buff[NUM_BUFF_SIZE] = {0};
+    uint32_t k = 0;
+
+    do {
+        num_buff[k++] = hex_digits[num & 0x0f];
+        num >>= 4;
+    } while (num);
+
+    while (k) {
+        _tfm_flush_formatted_buffer(pb, num_buff[--k]);
+        count++;
+    }
+
+    return count;
+}
+
+static int _tfm_log_vprintf(const char *fmt, va_list ap)
+{
+    int count = 0;
+    struct formatted_buffer_t outputbuf;
+
+    outputbuf.pos = 0;
+
+    while (*fmt) {
+        if (*fmt == '%') {
+            switch (*(++fmt)) {
+            case 'd':
+            case 'i':
+                count += _tfm_dec_num_output(&outputbuf,
+                                             va_arg(ap, int32_t), 'd');
+                break;
+            case 'u':
+                count += _tfm_dec_num_output(&outputbuf,
+                                             va_arg(ap, int32_t), 'u');
+                break;
+            case 'x':
+                count += _tfm_hex_num_output(&outputbuf, va_arg(ap, uint32_t),
+                                             hex_digits_lo);
+                break;
+            case 'X':
+                count += _tfm_hex_num_output(&outputbuf, va_arg(ap, uint32_t),
+                                             hex_digits_up);
+                break;
+            case 'p':
+                count += _tfm_string_output(&outputbuf, "0x");
+                count += _tfm_hex_num_output(&outputbuf, va_arg(ap, uint32_t),
+                                             hex_digits_lo);
+                break;
+            case 's':
+                count += _tfm_string_output(&outputbuf, va_arg(ap, char*));
+                break;
+            case 'c':
+                _tfm_flush_formatted_buffer(&outputbuf,
+                                            (uint8_t)va_arg(ap, int32_t));
+                count++;
+                break;
+            case '%':
+                _tfm_flush_formatted_buffer(&outputbuf, '%');
+                count++;
+                break;
+            default:
+                count += _tfm_string_output(&outputbuf, "[Unsupported Tag]");
+                continue;
+            }
+            fmt++;
+        } else {
+            _tfm_flush_formatted_buffer(&outputbuf, *fmt++);
+            count++;
+        }
+    }
+
+    /* End of printf, flush buf */
+    if (outputbuf.pos) {
+        count += stdio_output_string(outputbuf.buf, outputbuf.pos);
+    }
+
+    return count;
+}
+
+int tfm_log_printf(const char *fmt, ...)
+{
+    int count = 0;
+    va_list ap;
+
+    va_start(ap, fmt);
+    count = _tfm_log_vprintf(fmt, ap);
+    va_end(ap);
+
+    return count;
+}
diff --git a/lib/log/tfm_log_raw.h b/lib/log/tfm_log_raw.h
new file mode 100644
index 0000000..7a5a942
--- /dev/null
+++ b/lib/log/tfm_log_raw.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2019, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __TFM_LOG_RAW_H__
+#define __TFM_LOG_RAW_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * \brief Prints log messages
+ *
+ * \param[in]   fmt     Formatted string
+ * \param[in]   ...     Viriable length argument
+ *
+ * \return              Number of chars printed
+ *
+ * \note                This function has the similar input argument format as
+ *                      the 'printf' function. But it supports only some basic
+ *                      formats like 'sdicpuxX' and '%'. It will output
+ *                      "[Unsupported Tag]" when none of the above formats match
+ *
+ * \details             The following output formats are supported.
+ *                      %s - string
+ *                      %d - decimal signed integer (same for %i)
+ *                      %u - decimal unsigned integer
+ *                      %x - hex in lowercase
+ *                      %X - hex in uppercase
+ *                      %p - hex address of a pointer in lowercase
+ *                      %c - character
+ *                      %% - the '%' symbol
+ */
+int tfm_log_printf(const char *fmt, ...);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __TFM_LOG_RAW_H__ */
diff --git a/tests_psa_arch/test_app.c b/tests_psa_arch/test_app.c
index db40bdf..74f98ec 100644
--- a/tests_psa_arch/test_app.c
+++ b/tests_psa_arch/test_app.c
@@ -1,12 +1,12 @@
 /*
- * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
+ * Copyright (c) 2017-2023, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
  */
 
 #include "test_app.h"
-#include "tfm_tests_log_msg.h"
+#include "tfm_log.h"
 #include "os_wrapper/thread.h"
 
 /**
diff --git a/tests_reg/test/bl1/bl1_1/CMakeLists.txt b/tests_reg/test/bl1/bl1_1/CMakeLists.txt
index 1d08110..ce0a33d 100644
--- a/tests_reg/test/bl1/bl1_1/CMakeLists.txt
+++ b/tests_reg/test/bl1/bl1_1/CMakeLists.txt
@@ -11,11 +11,30 @@
 
 add_library(bl1_1_tests STATIC)
 
-target_link_libraries(tfm_test_framework_common
+set(LOG_SOURCE_ROOT ${TFM_TESTS_ROOT_DIR}/lib/log)
+
+add_library(bl1_1_log INTERFACE)
+
+target_sources(bl1_1_log
+    INTERFACE
+        ${LOG_SOURCE_ROOT}/tfm_log_raw.c
+)
+
+target_include_directories(bl1_1_log
+    INTERFACE
+        ${LOG_SOURCE_ROOT}
+)
+
+target_link_libraries(bl1_1_log
     INTERFACE
         platform_bl1_1_interface
 )
 
+target_link_libraries(tfm_test_framework_common
+    INTERFACE
+        bl1_1_log
+)
+
 add_subdirectory(suites/crypto)
 add_subdirectory(suites/random)
 add_subdirectory(suites/integration)
diff --git a/tests_reg/test/bl2/mcuboot/CMakeLists.txt b/tests_reg/test/bl2/mcuboot/CMakeLists.txt
index 48f2deb..17c7ab6 100644
--- a/tests_reg/test/bl2/mcuboot/CMakeLists.txt
+++ b/tests_reg/test/bl2/mcuboot/CMakeLists.txt
@@ -1,5 +1,5 @@
 #-------------------------------------------------------------------------------
-# SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
+# Copyright (c) 2021-2022, Arm Limited. All rights reserved.
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -10,11 +10,31 @@
 # It links platform_ns which is not built by SPE build.
 # So a dedicated library is duplicated here, and it links the platform_s instead of platform_ns.
 
+# TO-DO: find a better approach to reference the directory
+set(LOG_SOURCE_ROOT ${TFM_TESTS_ROOT_DIR}/lib/log)
+
+add_library(mcuboot_test_log INTERFACE)
 add_library(mcuboot_test_framework_common INTERFACE)
 
+target_sources(mcuboot_test_log
+    INTERFACE
+        ${LOG_SOURCE_ROOT}/tfm_log_raw.c
+)
+
+target_include_directories(mcuboot_test_log
+    INTERFACE
+        ${LOG_SOURCE_ROOT}
+)
+
+target_link_libraries(mcuboot_test_log
+    INTERFACE
+        platform_bl2
+)
+
 target_link_libraries(mcuboot_test_framework_common
     INTERFACE
         tfm_test_framework_common
+        mcuboot_test_log
 )
 
 add_subdirectory(suites/integration)
diff --git a/tests_reg/test/framework/test_log.h b/tests_reg/test/framework/test_log.h
index 303793b..4c14c60 100644
--- a/tests_reg/test/framework/test_log.h
+++ b/tests_reg/test/framework/test_log.h
@@ -13,17 +13,7 @@
 #elif defined USE_STDIO
 #include <stdio.h>
 #else
-/*
- * Depending on how the tests are compiled, they may
- * pick up the LOG_LEVEL definition from other components. These other values
- * will have no effect on logging in the tests as we always call the tfm_log
- * function. In the case that we do not have a definition, just set
- * it to VERBOSE
- */
-#ifndef LOG_LEVEL
-#define LOG_LEVEL LOG_LEVEL_VERBOSE
-#endif
-#include "tfm_log.h"
+#include "tfm_log_raw.h"
 #endif /* USE_SP_LOG */
 
 #ifdef __cplusplus
@@ -35,7 +25,7 @@
 #elif defined USE_STDIO
 #define TEST_LOG(...) printf(__VA_ARGS__)
 #else
-#define TEST_LOG(...) tfm_log(LOG_MARKER_RAW __VA_ARGS__)
+#define TEST_LOG(...) tfm_log_printf(__VA_ARGS__)
 #endif /* USE_SP_LOG */
 
 #ifdef __cplusplus
diff --git a/tests_reg/test/ns_regression/CMakeLists.txt b/tests_reg/test/ns_regression/CMakeLists.txt
index 4da9a37..543d746 100644
--- a/tests_reg/test/ns_regression/CMakeLists.txt
+++ b/tests_reg/test/ns_regression/CMakeLists.txt
@@ -41,13 +41,14 @@
     INTERFACE
         DOMAIN_NS=1
         $<$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>:CONFIG_TFM_ERPC_TEST_FRAMEWORK=1>
-        USE_STDIO
+        $<$<BOOL:${USE_STDIO}>:USE_STDIO>
 )
 
 target_link_libraries(tfm_test_framework_ns
     INTERFACE
         tfm_test_framework_common
         tfm_api_ns
+        tfm_ns_log
 )
 
 target_sources(tfm_ns_tests
diff --git a/tests_reg/test_app.c b/tests_reg/test_app.c
index 7ab6017..2d2df21 100644
--- a/tests_reg/test_app.c
+++ b/tests_reg/test_app.c
@@ -1,12 +1,12 @@
 /*
- * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
+ * Copyright (c) 2017-2023, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
  */
 
 #include "test_app.h"
-#include "tfm_tests_log_msg.h"
+#include "tfm_log.h"
 #ifdef TFM_NS_REG_TEST
 #include "non_secure_suites.h"
 #endif
