99namespace pcpp
1010{
1111
12+ namespace
13+ {
14+ // / Default log printer function that prints to std::cerr.
15+ void printToCerr (LogLevel logLevel, const std::string& logMessage, const std::string& file,
16+ const std::string& method, const int line)
17+ {
18+ // This mutex is used to prevent multiple threads from writing to the console at the same time.
19+ static std::mutex logMutex;
20+
21+ std::ostringstream sstream;
22+ sstream << file << " : " << method << " :" << line;
23+
24+ std::unique_lock<std::mutex> const lock (logMutex);
25+ std::cerr << std::left << " [" << std::setw (5 ) << Logger::logLevelAsString (logLevel) << " : " << std::setw (45 )
26+ << sstream.str () << " ] " << logMessage << std::endl;
27+ }
28+ } // namespace
29+
1230 // Alpine Linux incorrectly declares strerror_r
1331 // https://stackoverflow.com/questions/41953104/strerror-r-is-incorrectly-declared-on-alpine-linux
1432 char * checkError (int /* unused*/ , char * buffer, int /* unused*/ )
@@ -32,7 +50,7 @@ namespace pcpp
3250#endif
3351 }
3452
35- Logger::Logger () : m_LogsEnabled(true ), m_LogPrinter(&defaultLogPrinter )
53+ Logger::Logger () : m_LogsEnabled(true ), m_LogPrinter(&printToCerr )
3654 {
3755 m_LastError.reserve (200 );
3856 m_LogModulesArray.fill (LogLevel::Info);
@@ -55,6 +73,11 @@ namespace pcpp
5573 }
5674 }
5775
76+ void Logger::resetLogPrinter ()
77+ {
78+ m_LogPrinter = &printToCerr; // Reset to the default log printer
79+ }
80+
5881 std::unique_ptr<internal::LogContext> Logger::createLogContext ()
5982 {
6083 return createLogContext (LogLevel::Info, {}); // call the other createLogContext method
@@ -93,18 +116,4 @@ namespace pcpp
93116 m_LogPrinter (logLevel, message, source.file , source.function , source.line );
94117 }
95118 }
96-
97- void Logger::defaultLogPrinter (LogLevel logLevel, const std::string& logMessage, const std::string& file,
98- const std::string& method, const int line)
99- {
100- // This mutex is used to prevent multiple threads from writing to the console at the same time.
101- static std::mutex logMutex;
102-
103- std::ostringstream sstream;
104- sstream << file << " : " << method << " :" << line;
105-
106- std::unique_lock<std::mutex> const lock (logMutex);
107- std::cerr << std::left << " [" << std::setw (5 ) << Logger::logLevelAsString (logLevel) << " : " << std::setw (45 )
108- << sstream.str () << " ] " << logMessage << std::endl;
109- }
110119} // namespace pcpp
0 commit comments