diff --git a/system/bta/Android.bp b/system/bta/Android.bp
index 18a6cc1260e477da0ccbc8b3bb04307fea66d546..508aa47b63d1811de54e1f298eb7a4a6ff716819 100644
--- a/system/bta/Android.bp
+++ b/system/bta/Android.bp
@@ -189,6 +189,7 @@ cc_test {
     test_suites: ["device-tests"],
     srcs: [
         ":TestMockStackBtm",
+        ":TestCommonLogMsg",
         ":TestCommonMockFunctions",
         "test/bta_hf_client_test.cc",
         "test/bta_dm_cust_uuid_test.cc",
@@ -327,6 +328,7 @@ cc_test {
         "packages/modules/Bluetooth/system/utils/include",
     ],
     srcs: [
+        ":TestCommonLogMsg",
         "test/bta_hf_client_add_record_test.cc",
     ],
     header_libs: ["libbluetooth_headers"],
@@ -933,6 +935,7 @@ cc_test {
     ],
     srcs : [
         ":TestMockMainShim",
+        ":TestCommonLogMsg",
         ":TestCommonMainHandler",
         ":TestCommonMockFunctions",
         ":TestMockBtaGatt",
diff --git a/system/bta/test/bta_hf_client_add_record_test.cc b/system/bta/test/bta_hf_client_add_record_test.cc
index 5e50cc0ef98a63e640ebbacdc51f9784901bbf39..4689be7b92ce4abcb1dde145934e4d69d3b9e668 100644
--- a/system/bta/test/bta_hf_client_add_record_test.cc
+++ b/system/bta/test/bta_hf_client_add_record_test.cc
@@ -30,7 +30,6 @@ static uint16_t gVersion;
 // coverage is enabled because the compiler is unable to eliminate the `if`
 // checks against appl_trace_level in APPL_TRACE_* macros.
 uint8_t appl_trace_level = 0;
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
 bool SDP_AddProtocolList(uint32_t handle, uint16_t num_elem,
                          tSDP_PROTOCOL_ELEM* p_elem_list) {
   return false;
diff --git a/system/bta/test/bta_hf_client_test.cc b/system/bta/test/bta_hf_client_test.cc
index 92a669d067f477c940336a491fe384de357b483d..ca45b44890fb194e70771982549dc96c8d599fe6 100644
--- a/system/bta/test/bta_hf_client_test.cc
+++ b/system/bta/test/bta_hf_client_test.cc
@@ -34,10 +34,6 @@ const RawAddress bdaddr1({0x11, 0x22, 0x33, 0x44, 0x55, 0x66});
 const RawAddress bdaddr2({0x66, 0x55, 0x44, 0x33, 0x22, 0x11});
 }  // namespace
 
-// TODO(jpawlowski): there is some weird dependency issue in tests, and the
-// tests here fail to compile without this definition.
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
-
 class BtaHfClientTest : public testing::Test {
  protected:
   void SetUp() override {
diff --git a/system/bta/test/bta_hh_test.cc b/system/bta/test/bta_hh_test.cc
index 2ab6078b050edc6bcf958eb97f4c81e785509557..9a8e6a0d86522c72122078fab9dd2ece040dc6f1 100644
--- a/system/bta/test/bta_hh_test.cc
+++ b/system/bta/test/bta_hh_test.cc
@@ -26,7 +26,6 @@
 #include "test/mock/mock_osi_allocator.h"
 
 uint8_t appl_trace_level = 0;
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
 uint8_t btif_trace_level = BT_TRACE_LEVEL_DEBUG;
 
 namespace {
diff --git a/system/btif/Android.bp b/system/btif/Android.bp
index 6fca3df1b059eb8356b1477f224a5cf348042389..8f16f231d7a97438fc56df4cef471ede33f7718b 100644
--- a/system/btif/Android.bp
+++ b/system/btif/Android.bp
@@ -351,6 +351,7 @@ cc_test {
     },
     include_dirs: btifCommonIncludes,
     srcs: [
+        ":TestCommonLogMsg",
         "test/btif_rc_test.cc",
     ],
     header_libs: ["libbluetooth_headers"],
@@ -425,6 +426,7 @@ cc_test {
     test_suites: ["device-tests"],
     include_dirs: btifCommonIncludes,
     srcs: [
+        ":TestCommonLogMsg",
         "test/btif_hf_client_service_test.cc",
     ],
     header_libs: ["libbluetooth_headers"],
diff --git a/system/btif/test/btif_hf_client_service_test.cc b/system/btif/test/btif_hf_client_service_test.cc
index db48af146b37f93212612e4fd40e1befe0ac7639..ab2e3584988b671d6b9dc27f0d53ded8e0cf7fcd 100644
--- a/system/btif/test/btif_hf_client_service_test.cc
+++ b/system/btif/test/btif_hf_client_service_test.cc
@@ -7,9 +7,7 @@
 
 static tBTA_HF_CLIENT_FEAT gFeatures;
 
-
 uint8_t btif_trace_level = BT_TRACE_LEVEL_WARNING;
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
 tBTA_STATUS BTA_HfClientEnable(tBTA_HF_CLIENT_CBACK* p_cback,
                                tBTA_HF_CLIENT_FEAT features,
                                const char* p_service_name) {
diff --git a/system/btif/test/btif_rc_test.cc b/system/btif/test/btif_rc_test.cc
index 155b52eb3f4d4f54d77c606c0b6975ccb3b04559..a8dcca75b2108627c527a7092e8bceaea7e196c3 100644
--- a/system/btif/test/btif_rc_test.cc
+++ b/system/btif/test/btif_rc_test.cc
@@ -100,7 +100,6 @@ bool interop_match_addr(const interop_feature_t feature,
                         const RawAddress* addr) {
   return false;
 }
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
 
 /**
  * Test class to test selected functionality in hci/src/hci_layer.cc
diff --git a/system/main/test/main_shim_test.cc b/system/main/test/main_shim_test.cc
index 0d57c907107f077a09498e9730129fdedae08ed7..53278ee61d7549912bfe9817e9d56e94a7996311 100644
--- a/system/main/test/main_shim_test.cc
+++ b/system/main/test/main_shim_test.cc
@@ -216,7 +216,6 @@ struct hci_t;
 const hci_t* hci_layer_get_interface() { return nullptr; }
 struct packet_fragmenter_t;
 const packet_fragmenter_t* packet_fragmenter_get_interface() { return nullptr; }
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
 
 template <typename T>
 class MockEnQueue : public os::IQueueEnqueue<T> {
diff --git a/system/stack/Android.bp b/system/stack/Android.bp
index ed8d3e4cedf92a7af9d451954678015848590c65..13cde3dcd138d8b2c244151dc92abd92d895fd04 100644
--- a/system/stack/Android.bp
+++ b/system/stack/Android.bp
@@ -368,6 +368,7 @@ cc_test {
     ],
     srcs: [
         ":TestCommonMockFunctions",
+        ":TestCommonLogMsg",
         ":TestMockHci",
         ":TestMockStackMetrics",
         "rfcomm/port_api.cc",
@@ -427,6 +428,7 @@ cc_test {
         "packages/modules/Bluetooth/system/utils/include",
     ],
     srcs: crypto_toolbox_srcs + [
+        ":TestCommonLogMsg",
         ":TestCommonMainHandler",
         ":TestMockBtif",
         ":TestMockCommon",
@@ -655,6 +657,7 @@ cc_test {
         "avdt/avdt_scb_act.cc",
         "test/common/mock_btu_layer.cc",
         "test/common/mock_stack_avdt_msg.cc",
+        ":TestCommonLogMsg",
         ":TestMockStackL2cap",
         ":TestMockStackAcl",
         ":TestMockStackA2dp",
@@ -1094,6 +1097,7 @@ cc_test {
         "BluetoothGeneratedPackets_h",
     ],
     srcs: [
+        ":TestCommonLogMsg",
         ":TestMockBta",
         ":TestMockBtif",
         ":TestMockHci",
@@ -1236,6 +1240,7 @@ cc_test {
     ],
     srcs: [
         ":OsiCompatSources",
+        ":TestCommonLogMsg",
         ":TestCommonMainHandler",
         ":TestCommonMockFunctions",
         ":TestCommonStackConfig",
@@ -1309,6 +1314,7 @@ cc_test {
     ],
     srcs: [
         ":OsiCompatSources",
+        ":TestCommonLogMsg",
         ":TestCommonMainHandler",
         ":TestCommonMockFunctions",
         ":TestCommonStackConfig",
@@ -1377,6 +1383,7 @@ cc_test {
         "packages/modules/Bluetooth/system/utils/include",
     ],
     srcs: [
+        ":TestCommonLogMsg",
         ":TestCommonMockFunctions",
         ":TestMockBtif",
         ":TestMockOsi",
diff --git a/system/stack/test/gatt/stack_gatt_test.cc b/system/stack/test/gatt/stack_gatt_test.cc
index 38d6cc66470214df64035c33e06dd5f162cdda5e..fd58899a1262983a3d05d756f3497aff35877b68 100644
--- a/system/stack/test/gatt/stack_gatt_test.cc
+++ b/system/stack/test/gatt/stack_gatt_test.cc
@@ -31,8 +31,6 @@
 
 std::map<std::string, int> mock_function_count_map;
 
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
-
 class StackGattTest : public ::testing::Test {};
 
 namespace {
diff --git a/system/stack/test/rfcomm/stack_rfcomm_test_main.cc b/system/stack/test/rfcomm/stack_rfcomm_test_main.cc
index 4c3157d2d974496cdb69a7bab452eadcbec5afef..dea28eda031866fc0b963b89008e1f0af64bd3e0 100644
--- a/system/stack/test/rfcomm/stack_rfcomm_test_main.cc
+++ b/system/stack/test/rfcomm/stack_rfcomm_test_main.cc
@@ -24,16 +24,6 @@
 
 #include <string>
 
-// Override LogMsg method so that we can output log via VLOG(1)
-extern "C" void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {
-  char buffer[256];
-  va_list args;
-  va_start(args, fmt_str);
-  vsnprintf(buffer, 256, fmt_str, args);
-  VLOG(1) << buffer;
-  va_end(args);
-}
-
 int main(int argc, char** argv) {
   ::testing::InitGoogleTest(&argc, argv);
 
diff --git a/system/stack/test/sdp/stack_sdp_utils_test.cc b/system/stack/test/sdp/stack_sdp_utils_test.cc
index 6db6bb20da87cce920fc4190a714d866e5ba1a8d..253623d4533fd15d500c799f0162502f8a4717de 100644
--- a/system/stack/test/sdp/stack_sdp_utils_test.cc
+++ b/system/stack/test/sdp/stack_sdp_utils_test.cc
@@ -35,8 +35,6 @@ using testing::SetArrayArgument;
 // Global trace level referred in the code under test
 uint8_t appl_trace_level = BT_TRACE_LEVEL_VERBOSE;
 
-extern "C" void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
-
 namespace {
 // convenience mock
 class IopMock {
diff --git a/system/stack/test/stack_acl_test.cc b/system/stack/test/stack_acl_test.cc
index 6b741e2d19a62894e141ebf3f94479e4126f019b..433507b54976482e5ab1a0de7fb6849ffc1f8449 100644
--- a/system/stack/test/stack_acl_test.cc
+++ b/system/stack/test/stack_acl_test.cc
@@ -35,8 +35,6 @@
 
 tBTM_CB btm_cb;
 
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
-
 namespace {
 const char* test_flags[] = {
     "INIT_logging_debug_enabled_for_all=true",
diff --git a/system/stack/test/stack_avdtp_test.cc b/system/stack/test/stack_avdtp_test.cc
index 24fdf26c45a3f13b512bee92878ee081f3b7f0bf..b3660632ec5716f78f9465b13ac79c91fd2c92f0 100644
--- a/system/stack/test/stack_avdtp_test.cc
+++ b/system/stack/test/stack_avdtp_test.cc
@@ -30,8 +30,6 @@
 // Global trace level referred in the code under test
 uint8_t appl_trace_level = BT_TRACE_LEVEL_VERBOSE;
 
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) { }
-
 // All mock requires this symbol to count calling times
 std::map<std::string, int> mock_function_count_map;
 
diff --git a/system/stack/test/stack_btu_test.cc b/system/stack/test/stack_btu_test.cc
index 507d50cbb35c1d631fac92f0ae36cd0913222879..c8f7280886ebd6afe3ec005aaddcbd4d3cc23b81 100644
--- a/system/stack/test/stack_btu_test.cc
+++ b/system/stack/test/stack_btu_test.cc
@@ -31,8 +31,6 @@ void btu_hcif_hdl_command_status(uint16_t opcode, uint8_t status,
                                  const uint8_t* p_cmd,
                                  void* p_vsc_status_cback);
 
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
-
 class StackBtuTest : public ::testing::Test {
  protected:
   void SetUp() override { mock_function_count_map.clear(); }
diff --git a/system/stack/test/stack_l2cap_test.cc b/system/stack/test/stack_l2cap_test.cc
index 1147bc3e7787bfe68e6c4616a82c68c1cf618a54..d0d54fc4eeeb6435cdddf55421555dd21d7d83fd 100644
--- a/system/stack/test/stack_l2cap_test.cc
+++ b/system/stack/test/stack_l2cap_test.cc
@@ -33,8 +33,6 @@ void l2c_link_send_to_lower_ble(tL2C_LCB* p_lcb, BT_HDR* p_buf);
 // Global trace level referred in the code under test
 uint8_t appl_trace_level = BT_TRACE_LEVEL_VERBOSE;
 
-extern "C" void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
-
 namespace {
 constexpr uint16_t kAclBufferCountClassic = 123;
 constexpr uint8_t kAclBufferCountBle = 45;
diff --git a/system/stack/test/stack_smp_test.cc b/system/stack/test/stack_smp_test.cc
index 85a16f97976c7a47e3e1685c1af803d493679196..167539bb734ac9bd3882886b6820b04b956f0395 100644
--- a/system/stack/test/stack_smp_test.cc
+++ b/system/stack/test/stack_smp_test.cc
@@ -133,15 +133,6 @@ const stack_config_t* stack_config_get_interface(void) {
  * MSB on the right.
  */
 
-// Require bte_logmsg.cc to run, here is just to fake it as we don't care about
-// trace in unit test
-void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {
-  va_list args;
-  va_start(args, fmt_str);
-  vprintf(fmt_str, args);
-  va_end(args);
-}
-
 extern Octet16 smp_gen_p1_4_confirm(tSMP_CB* p_cb,
                                     tBLE_ADDR_TYPE remote_bd_addr_type);