Logger: Independent logging level for ILogSink

This commit is contained in:
Pavel Kirienko
2014-03-25 21:45:12 +04:00
parent 379a19c1b8
commit 40a9194574
3 changed files with 52 additions and 14 deletions
+13 -7
View File
@@ -2,6 +2,7 @@
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
*/
#include <cstdlib>
#include <uavcan/protocol/logger.hpp>
namespace uavcan
@@ -9,18 +10,23 @@ namespace uavcan
const Logger::LogLevel Logger::LevelAboveAll;
Logger::LogLevel Logger::getExternalSinkLevel() const
{
return (external_sink_ == NULL) ? LevelAboveAll : external_sink_->getLogLevel();
}
int Logger::log(const protocol::debug::LogMessage& message)
{
int retval = 0;
if (message.level.value >= getExternalSinkLevel())
{
external_sink_->log(message);
}
if (message.level.value >= level_)
{
const int res = logmsg_pub_.broadcast(message);
if (external_sink_)
{
external_sink_->log(message);
}
return res;
retval = logmsg_pub_.broadcast(message);
}
return 0;
return retval;
}
}