blob: 0c189bf1858a0c277f4fd751d46c1a4933b3ccab [file] [log] [blame]
Sunny Srivastavafa5e4d32023-03-12 11:59:49 -05001#include "logger.hpp"
2
3#include <sstream>
4
5namespace vpd
6{
Sunny Srivastava5779d972025-08-08 01:45:23 -05007std::shared_ptr<Logger> Logger::m_loggerInstance;
8
9void Logger::logMessage(std::string_view i_message,
10 const PlaceHolder& i_placeHolder,
11 const types::PelInfoTuple* i_pelTuple,
12 const std::source_location& i_location)
13{
14 std::ostringstream l_log;
15 l_log << "FileName: " << i_location.file_name() << ","
16 << " Line: " << i_location.line() << " " << i_message;
17
Souvik Roya5e18b82025-09-25 05:59:56 +000018 if ((i_placeHolder == PlaceHolder::COLLECTION) && m_collectionLogger)
Sunny Srivastava5779d972025-08-08 01:45:23 -050019 {
20 // Log it to a specific place.
Souvik Roya5e18b82025-09-25 05:59:56 +000021 m_collectionLogger->writeLogToFile(i_placeHolder);
Sunny Srivastava5779d972025-08-08 01:45:23 -050022 }
23 else if (i_placeHolder == PlaceHolder::PEL)
24 {
25 if (i_pelTuple)
26 {
27 // LOG PEL
28 // This should call create PEL API from the event logger.
29 return;
30 }
31 std::cout << "Pel info tuple required to log PEL for message <" +
32 l_log.str() + ">"
33 << std::endl;
34 }
Souvik Roya5e18b82025-09-25 05:59:56 +000035 else if ((i_placeHolder == PlaceHolder::VPD_WRITE) && m_vpdWriteLogger)
36 {
37 m_vpdWriteLogger->writeLogToFile(i_placeHolder);
38 }
Sunny Srivastava5779d972025-08-08 01:45:23 -050039 else
40 {
41 // Default case, let it go to journal.
42 std::cout << l_log.str() << std::endl;
43 }
44}
45
Souvik Roya5e18b82025-09-25 05:59:56 +000046void Logger::initiateVpdCollectionLogging() noexcept
47{
48 try
49 {
50 /* TODO:
51 - check /var/lib/vpd for number "collection.*" log file
52 - if 3 collection_[0-2].log files are found
53 - delete collection_1.log
54 - create collection logger object with collection_1.log
55 parameter
56 - else
57 - create collection logger object with collection_(n+1).log
58 parameter*/
59 }
60 catch (const std::exception& l_ex)
61 {
62 logMessage("Failed to initialize collection logger. Error: " +
63 std::string(l_ex.what()));
64 }
65}
66
Sunny Srivastavafa5e4d32023-03-12 11:59:49 -050067namespace logging
68{
69void logMessage(std::string_view message, const std::source_location& location)
70{
71 std::ostringstream log;
72 log << "FileName: " << location.file_name() << ","
73 << " Line: " << location.line() << " " << message;
74
Sunny Srivastavafa5e4d32023-03-12 11:59:49 -050075 std::cout << log.str() << std::endl;
76}
77} // namespace logging
78} // namespace vpd