diff --git a/erpc/tfm_reg_tests/CMakeLists.txt b/erpc/tfm_reg_tests/CMakeLists.txt
index bb7688d..888c248 100644
--- a/erpc/tfm_reg_tests/CMakeLists.txt
+++ b/erpc/tfm_reg_tests/CMakeLists.txt
@@ -151,10 +151,6 @@
 # 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_log_raw.c b/lib/log/tfm_log_raw.c
deleted file mode 100644
index 61f75ca..0000000
--- a/lib/log/tfm_log_raw.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * 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
deleted file mode 100644
index 7a5a942..0000000
--- a/lib/log/tfm_log_raw.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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_reg/test/bl1/bl1_1/CMakeLists.txt b/tests_reg/test/bl1/bl1_1/CMakeLists.txt
index ce0a33d..1d08110 100644
--- a/tests_reg/test/bl1/bl1_1/CMakeLists.txt
+++ b/tests_reg/test/bl1/bl1_1/CMakeLists.txt
@@ -11,28 +11,9 @@
 
 add_library(bl1_1_tests STATIC)
 
-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
+        platform_bl1_1_interface
 )
 
 add_subdirectory(suites/crypto)
diff --git a/tests_reg/test/bl2/mcuboot/CMakeLists.txt b/tests_reg/test/bl2/mcuboot/CMakeLists.txt
index 17c7ab6..48f2deb 100644
--- a/tests_reg/test/bl2/mcuboot/CMakeLists.txt
+++ b/tests_reg/test/bl2/mcuboot/CMakeLists.txt
@@ -1,5 +1,5 @@
 #-------------------------------------------------------------------------------
-# Copyright (c) 2021-2022, Arm Limited. All rights reserved.
+# SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
 #
 # SPDX-License-Identifier: BSD-3-Clause
 #
@@ -10,31 +10,11 @@
 # 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 4c14c60..303793b 100644
--- a/tests_reg/test/framework/test_log.h
+++ b/tests_reg/test/framework/test_log.h
@@ -13,7 +13,17 @@
 #elif defined USE_STDIO
 #include <stdio.h>
 #else
-#include "tfm_log_raw.h"
+/*
+ * 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"
 #endif /* USE_SP_LOG */
 
 #ifdef __cplusplus
@@ -25,7 +35,7 @@
 #elif defined USE_STDIO
 #define TEST_LOG(...) printf(__VA_ARGS__)
 #else
-#define TEST_LOG(...) tfm_log_printf(__VA_ARGS__)
+#define TEST_LOG(...) tfm_log(LOG_MARKER_RAW __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 543d746..4da9a37 100644
--- a/tests_reg/test/ns_regression/CMakeLists.txt
+++ b/tests_reg/test/ns_regression/CMakeLists.txt
@@ -41,14 +41,13 @@
     INTERFACE
         DOMAIN_NS=1
         $<$<BOOL:${CONFIG_TFM_ERPC_TEST_FRAMEWORK}>:CONFIG_TFM_ERPC_TEST_FRAMEWORK=1>
-        $<$<BOOL:${USE_STDIO}>: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
