Instantiate VPD write logger only on first use
This commit moves out the VPD write logger's instantiation from the
constructor of Logger. As part of VPD write logger instantiation, a log
file is created, which is unnecessary until a message has to be logged.
Hence, VPD write logger is now instantiated only on first use.
Test:
'''
- Install BMC firmware image
- Delete /var/lib/vpd folder
- Restart vpd-manager service
- Observe vpd-manager service starts as expected, no error logs or PELs
with respect to manager instantiation
'''
Change-Id: I9244cd1e8b8ce09f0bae48fed0fd548445243f60
Signed-off-by: Souvik Roy <souvikroyofficial10@gmail.com>
diff --git a/vpd-manager/include/logger.hpp b/vpd-manager/include/logger.hpp
index 8dc8b55..1980b2b 100644
--- a/vpd-manager/include/logger.hpp
+++ b/vpd-manager/include/logger.hpp
@@ -333,11 +333,7 @@
/**
* @brief Constructor
*/
- Logger() : m_vpdWriteLogger(nullptr), m_collectionLogger(nullptr)
- {
- m_vpdWriteLogger.reset(
- new SyncFileLogger("/var/lib/vpd/vpdWrite.log", 128));
- }
+ Logger() : m_vpdWriteLogger(nullptr), m_collectionLogger(nullptr) {}
// Instance to the logger class.
static std::shared_ptr<Logger> m_loggerInstance;
diff --git a/vpd-manager/src/logger.cpp b/vpd-manager/src/logger.cpp
index 7a66c16..504c3b2 100644
--- a/vpd-manager/src/logger.cpp
+++ b/vpd-manager/src/logger.cpp
@@ -37,8 +37,13 @@
l_log.str() + ">"
<< std::endl;
}
- else if ((i_placeHolder == PlaceHolder::VPD_WRITE) && m_vpdWriteLogger)
+ else if (i_placeHolder == PlaceHolder::VPD_WRITE)
{
+ if (!m_vpdWriteLogger)
+ {
+ m_vpdWriteLogger.reset(
+ new SyncFileLogger("/var/lib/vpd/vpdWrite.log", 128));
+ }
m_vpdWriteLogger->logMessage(l_log.str());
}
else