FileLogger:Implement synchronous file logging

This commit implements synchronous safe file logging. Certain traces,
for example VPD write action, in the repo need to be logged into
specific files. FileLogger class facilitates this. Note: this
synchronous file logging implementation is not multi-thread safe.

Change-Id: Ifdd8cdf601ec34fc57710fb201d24ebff41d8f99
Signed-off-by: Souvik Roy <souvikroyofficial10@gmail.com>
diff --git a/vpd-manager/src/logger.cpp b/vpd-manager/src/logger.cpp
index b951314..254a177 100644
--- a/vpd-manager/src/logger.cpp
+++ b/vpd-manager/src/logger.cpp
@@ -64,9 +64,33 @@
     }
 }
 
+void SyncFileLogger::logMessage(const std::string_view& i_message)
+{
+    try
+    {
+        if (++m_currentNumEntries > m_maxEntries)
+        {
+            rotateFile();
+        }
+        m_fileStream << timestamp() << " : " << i_message << std::endl;
+    }
+    catch (const std::exception& l_ex)
+    {
+        // log message to journal if we fail to log to file
+        auto l_logger = Logger::getLoggerInstance();
+        l_logger->logMessage(i_message);
+    }
+}
+
 void ILogFileHandler::rotateFile(
     [[maybe_unused]] const unsigned i_numEntriesToDelete)
-{}
+{
+    /* TODO:
+        - delete specified number of oldest entries from beginning of file
+        - rewrite file to move existing logs to beginning of file
+    */
+    m_currentNumEntries = m_maxEntries - i_numEntriesToDelete;
+}
 namespace logging
 {
 void logMessage(std::string_view message, const std::source_location& location)