logs: implement logs::get_channels()

This commit is contained in:
Nekotekina 2020-01-31 15:04:40 +03:00
parent 26cccead6e
commit a867522b16
2 changed files with 21 additions and 0 deletions

View File

@ -202,6 +202,24 @@ namespace logs
}
}
std::vector<std::string> get_channels()
{
std::vector<std::string> result;
std::lock_guard lock(g_mutex);
for (auto&& p : get_logger()->channels)
{
// Copy names removing duplicates
if (result.empty() || result.back() != p.first)
{
result.push_back(p.first);
}
}
return result;
}
// Must be called in main() to stop accumulating messages in g_messages
void set_init()
{

View File

@ -95,6 +95,9 @@ namespace logs
// Log level control: get channel level
level get_level(const std::string&);
// Get all registered log channels
std::vector<std::string> get_channels();
}
#define LOG_CHANNEL(ch, ...) inline ::logs::channel ch(#ch, ##__VA_ARGS__)