@@ -94,6 +94,27 @@ namespace logit {
9494 }
9595 }
9696
97+ // / \brief Sets minimal log level for all loggers.
98+ // / \param level Minimum log level.
99+ void set_log_level (LogLevel level) {
100+ if (m_shutdown) return ;
101+ std::lock_guard<std::mutex> lock (m_mutex);
102+ for (auto & strategy : m_loggers) {
103+ strategy.logger ->set_log_level (level);
104+ }
105+ }
106+
107+ // / \brief Sets minimal log level for a specific logger.
108+ // / \param logger_index Index of logger.
109+ // / \param level Minimum log level.
110+ void set_log_level (int logger_index, LogLevel level) {
111+ if (m_shutdown) return ;
112+ std::lock_guard<std::mutex> lock (m_mutex);
113+ if (logger_index >= 0 && logger_index < static_cast <int >(m_loggers.size ())) {
114+ m_loggers[logger_index].logger ->set_log_level (level);
115+ }
116+ }
117+
97118 // / \brief Checks whether a logger is in single mode.
98119 // / \param logger_index Index of logger.
99120 // / \return True if logger is in single mode, false otherwise.
@@ -118,12 +139,14 @@ namespace logit {
118139 if (record.logger_index >= 0 && record.logger_index < static_cast <int >(m_loggers.size ())) {
119140 const auto & strategy = m_loggers[record.logger_index ];
120141 if (!strategy.enabled ) return ;
142+ if (static_cast <int >(record.log_level ) < static_cast <int >(strategy.logger ->get_log_level ())) return ;
121143 strategy.logger ->log (record, strategy.formatter ->format (record));
122144 return ;
123145 }
124146 for (const auto & strategy : m_loggers) {
125147 if (strategy.single_mode ) continue ;
126148 if (!strategy.enabled ) continue ;
149+ if (static_cast <int >(record.log_level ) < static_cast <int >(strategy.logger ->get_log_level ())) continue ;
127150 strategy.logger ->log (record, strategy.formatter ->format (record));
128151 }
129152 }
0 commit comments