diff --git a/src/adaptations/device-layer/Fuchsia/Logging.cpp b/src/adaptations/device-layer/Fuchsia/Logging.cpp
index 02c3e48..d878ec1 100644
--- a/src/adaptations/device-layer/Fuchsia/Logging.cpp
+++ b/src/adaptations/device-layer/Fuchsia/Logging.cpp
@@ -46,28 +46,29 @@
         char module_name[nlWeaveLoggingModuleNameLen + 1];
         ::GetModuleName(module_name, module);
 
-        syslog::LogSeverity severity = syslog::LOG_INFO;
+        fuchsia_logging::LogSeverity severity = fuchsia_logging::LOG_INFO;
         switch (category)
         {
         case kLogCategory_Error:
-            severity = syslog::LOG_ERROR;
+            severity = fuchsia_logging::LOG_ERROR;
             break;
         case kLogCategory_Progress:
-            severity = syslog::LOG_INFO;
+            severity = fuchsia_logging::LOG_INFO;
             break;
         case kLogCategory_Detail:
         case kLogCategory_Retain:
-            severity = syslog::LOG_DEBUG;
+            severity = fuchsia_logging::LOG_DEBUG;
             break;
         }
 
-        if (!syslog::ShouldCreateLogMessage(severity)) {
+        if (!fuchsia_logging::ShouldCreateLogMessage(severity))
+        {
             return;
         }
 
         const char * file_basename = strrchr(file, '/');
-        file_basename = file_basename ? file_basename + 1 : file;
-        syslog::LogMessage(severity, file_basename, line, nullptr, nullptr).stream()
+        file_basename              = file_basename ? file_basename + 1 : file;
+        fuchsia_logging::LogMessage(severity, file_basename, line, nullptr, nullptr).stream()
             << "[" << module_name << "] " << formattedMsg;
     }
 }
@@ -94,4 +95,4 @@
 } // namespace Weave
 } // namespace nl
 
-#endif //#if WEAVE_LOGGING_STYLE_EXTERNAL
+#endif // #if WEAVE_LOGGING_STYLE_EXTERNAL
diff --git a/src/adaptations/device-layer/Fuchsia/minimal/Logging.cpp b/src/adaptations/device-layer/Fuchsia/minimal/Logging.cpp
index df64d4d..3e9ad83 100644
--- a/src/adaptations/device-layer/Fuchsia/minimal/Logging.cpp
+++ b/src/adaptations/device-layer/Fuchsia/minimal/Logging.cpp
@@ -14,10 +14,9 @@
 namespace Logging {
 namespace {
 constexpr size_t kFormattedMessageSize = 256;
-}  // namespace
+} // namespace
 
-void Log(uint8_t module, uint8_t category, const char * file, uint32_t line, const char * msg,
-         va_list v)
+void Log(uint8_t module, uint8_t category, const char * file, uint32_t line, const char * msg, va_list v)
 {
     if (IsCategoryEnabled(category))
     {
@@ -27,28 +26,29 @@
         char module_name[nlWeaveLoggingModuleNameLen + 1];
         GetModuleName(module_name, module);
 
-        syslog::LogSeverity severity = syslog::LOG_INFO;
+        fuchsia_logging::LogSeverity severity = fuchsia_logging::LOG_INFO;
         switch (category)
         {
         case kLogCategory_Error:
-            severity = syslog::LOG_ERROR;
+            severity = fuchsia_logging::LOG_ERROR;
             break;
         case kLogCategory_Progress:
-            severity = syslog::LOG_INFO;
+            severity = fuchsia_logging::LOG_INFO;
             break;
         case kLogCategory_Detail:
         case kLogCategory_Retain:
-            severity = syslog::LOG_DEBUG;
+            severity = fuchsia_logging::LOG_DEBUG;
             break;
         }
 
-        if (!syslog::ShouldCreateLogMessage(severity)) {
+        if (!fuchsia_logging::ShouldCreateLogMessage(severity))
+        {
             return;
         }
 
         const char * file_basename = strrchr(file, '/');
-        file_basename = file_basename ? file_basename + 1 : file;
-        syslog::LogMessage(severity, file_basename, line, nullptr, nullptr).stream()
+        file_basename              = file_basename ? file_basename + 1 : file;
+        fuchsia_logging::LogMessage(severity, file_basename, line, nullptr, nullptr).stream()
             << "[" << module_name << "] " << formattedMsg;
     }
 }
@@ -69,8 +69,8 @@
     va_end(vargs);
 }
 
-}  // namespace Logging
-}  // namespace Weave
-}  // namespace nl
+} // namespace Logging
+} // namespace Weave
+} // namespace nl
 
-#endif  // WEAVE_LOGGING_STYLE_EXTERNAL
+#endif // WEAVE_LOGGING_STYLE_EXTERNAL
