diff --git a/source/log/CMakeLists.txt b/source/log/CMakeLists.txt
new file mode 100644
index 0000000..1de737e
--- /dev/null
+++ b/source/log/CMakeLists.txt
@@ -0,0 +1,43 @@
+#----------------------------------------------------------------------------
+#  Copyright (c) 2022 Arm Limited. All rights reserved.
+#  SPDX-License-Identifier: Apache-2.0
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#----------------------------------------------------------------------------
+
+#######################################################
+# Header-only logging definitions as an interface lib.#
+#######################################################
+cmake_minimum_required(VERSION 3.15.6)
+
+set(BSP_LOGGING_TARGET log)
+
+project(${BSP_LOGGING_TARGET}
+    DESCRIPTION     "Generic logging formatting header-only interface lib."
+    LANGUAGES       C)
+
+add_library(${BSP_LOGGING_TARGET} INTERFACE)
+
+if (DEFINED LOG_LEVEL)
+    message(STATUS "Setting log level to ${LOG_LEVEL}")
+    target_compile_definitions(${BSP_LOGGING_TARGET}
+        INTERFACE
+        LOG_LEVEL=${LOG_LEVEL})
+endif()
+
+target_include_directories(${BSP_LOGGING_TARGET} INTERFACE include)
+
+message(STATUS "*******************************************************")
+message(STATUS "Library                                : " ${BSP_LOGGING_TARGET})
+message(STATUS "CMAKE_SYSTEM_PROCESSOR                 : " ${CMAKE_SYSTEM_PROCESSOR})
+message(STATUS "*******************************************************")
diff --git a/source/log/include/log_macros.h b/source/log/include/log_macros.h
new file mode 100644
index 0000000..15f4dd5
--- /dev/null
+++ b/source/log/include/log_macros.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2021 Arm Limited. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef ML_EMBEDDED_CORE_LOG_H
+#define ML_EMBEDDED_CORE_LOG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <inttypes.h>
+
+#define LOG_LEVEL_TRACE       0
+#define LOG_LEVEL_DEBUG       1
+#define LOG_LEVEL_INFO        2
+#define LOG_LEVEL_WARN        3
+#define LOG_LEVEL_ERROR       4
+
+#ifndef LOG_LEVEL
+#define LOG_LEVEL             LOG_LEVEL_INFO
+#endif /*LOG_LEVEL*/
+
+#define UNUSED(x)       ((void)(x))
+
+#if (LOG_LEVEL == LOG_LEVEL_TRACE)
+    #define trace(...)        printf("TRACE - "); printf(__VA_ARGS__)
+#else
+    #define trace(...)
+#endif  /* LOG_LEVEL == LOG_LEVEL_TRACE */
+
+#if (LOG_LEVEL <= LOG_LEVEL_DEBUG)
+    #define debug(...)        printf("DEBUG - "); printf(__VA_ARGS__)
+#else
+    #define debug(...)
+#endif  /* LOG_LEVEL > LOG_LEVEL_TRACE */
+
+#if (LOG_LEVEL <= LOG_LEVEL_INFO)
+    #define info(...)         printf("INFO - "); printf(__VA_ARGS__)
+#else
+    #define info(...)
+#endif  /* LOG_LEVEL > LOG_LEVEL_DEBUG */
+
+#if (LOG_LEVEL <= LOG_LEVEL_WARN)
+    #define warn(...)         printf("WARN - "); printf(__VA_ARGS__)
+#else
+    #define warn(...)
+#endif  /* LOG_LEVEL > LOG_LEVEL_INFO */
+
+#if (LOG_LEVEL <= LOG_LEVEL_ERROR)
+    #define printf_err(...)   printf("ERROR - "); printf(__VA_ARGS__)
+#else
+    #define printf_err(...)
+#endif  /* LOG_LEVEL > LOG_LEVEL_INFO */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ML_EMBEDDED_CORE_LOG_H */
\ No newline at end of file
