Skip to content

Commit 8ded9f0

Browse files
authored
Moved the default log printer to have internal linkage. (#1902)
1 parent 760411a commit 8ded9f0

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

Common++/header/Logger.h

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -305,10 +305,7 @@ namespace pcpp
305305
}
306306

307307
/// Set the log printer back to the default printer
308-
void resetLogPrinter()
309-
{
310-
m_LogPrinter = &defaultLogPrinter;
311-
}
308+
void resetLogPrinter();
312309

313310
/// @return Get the last error message
314311
std::string getLastError() const
@@ -406,9 +403,6 @@ namespace pcpp
406403

407404
// private c'tor - this class is a singleton
408405
Logger();
409-
410-
static void defaultLogPrinter(LogLevel logLevel, const std::string& logMessage, const std::string& file,
411-
const std::string& method, int line);
412406
};
413407

414408
} // namespace pcpp

Common++/src/Logger.cpp

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,24 @@
99
namespace 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

Comments
 (0)