diff --git a/include/hyprutils/cli/Logger.hpp b/include/hyprutils/cli/Logger.hpp index fa032a4..3d2d9bd 100644 --- a/include/hyprutils/cli/Logger.hpp +++ b/include/hyprutils/cli/Logger.hpp @@ -35,6 +35,7 @@ namespace Hyprutils::CLI { void setTime(bool enabled); void setEnableStdout(bool enabled); void setEnableColor(bool enabled); + void setEnableRolling(bool enabled); std::expected setOutputFile(const std::string_view& file); const std::string& rollingLog(); diff --git a/src/cli/Logger.cpp b/src/cli/Logger.cpp index 0a374b9..32d37a4 100644 --- a/src/cli/Logger.cpp +++ b/src/cli/Logger.cpp @@ -29,6 +29,10 @@ void CLogger::setEnableColor(bool enabled) { m_impl->m_colorEnabled = enabled; } +void CLogger::setEnableRolling(bool enabled) { + m_impl->m_rollingEnabled = enabled; +} + std::expected CLogger::setOutputFile(const std::string_view& file) { if (file.empty()) { m_impl->m_fileEnabled = false; @@ -132,7 +136,8 @@ void CLoggerImpl::log(eLogLevel level, const std::string_view& msg, const std::s if (m_fileEnabled) m_logOfs << logPrefix << logMsg << "\n"; - appendToRolling(logPrefix + logMsg); + if (m_rollingEnabled) + appendToRolling(logPrefix + logMsg); } void CLoggerImpl::updateParentShouldLog() { diff --git a/src/cli/Logger.hpp b/src/cli/Logger.hpp index d6c2626..3dab6e0 100644 --- a/src/cli/Logger.hpp +++ b/src/cli/Logger.hpp @@ -21,10 +21,11 @@ namespace Hyprutils::CLI { std::ofstream m_logOfs; std::filesystem::path m_logFilePath; - bool m_timeEnabled = false; - bool m_stdoutEnabled = true; - bool m_fileEnabled = false; - bool m_colorEnabled = true; + bool m_timeEnabled = false; + bool m_stdoutEnabled = true; + bool m_fileEnabled = false; + bool m_colorEnabled = true; + bool m_rollingEnabled = false; std::mutex m_logMtx; diff --git a/tests/cli/Logger.cpp b/tests/cli/Logger.cpp index d24838f..2149779 100644 --- a/tests/cli/Logger.cpp +++ b/tests/cli/Logger.cpp @@ -10,6 +10,9 @@ using namespace Hyprutils; TEST(CLI, Logger) { CLogger logger; + + logger.setEnableRolling(true); + logger.log(Hyprutils::CLI::LOG_DEBUG, "Hello!"); EXPECT_EQ(logger.rollingLog(), "DEBUG ]: Hello!"); @@ -37,6 +40,12 @@ TEST(CLI, Logger) { EXPECT_EQ(logger.rollingLog(), "DEBUG ]: Hello!\nTRACE ]: Hello, Trace!\nTRACE from conn ]: Hello from connection!"); + logger.setEnableRolling(false); + + connection.log(Hyprutils::CLI::LOG_ERR, "Err!"); + + EXPECT_EQ(logger.rollingLog(), "DEBUG ]: Hello!\nTRACE ]: Hello, Trace!\nTRACE from conn ]: Hello from connection!"); + logger.setEnableStdout(false); logger.log(Hyprutils::CLI::LOG_ERR, "Error"); @@ -69,6 +78,8 @@ TEST(CLI, Logger) { logger.log(Hyprutils::CLI::LOG_CRIT, "rip"); + logger.setEnableRolling(true); + // spam some logs to check rolling for (size_t i = 0; i < 200; ++i) { logger.log(LOG_ERR, "Oh noes!!!");