Belle II Software  release-05-02-19
LogConnectionFilter.cc
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010-2018 Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: Thomas Kuhr, Christian Pulvermacher, Thomas Hauth, *
7  * Martin Ritter *
8  * *
9  * This software is provided "as is" without any warranty. *
10  **************************************************************************/
11 
12 #include <framework/logging/LogConnectionFilter.h>
13 
14 using namespace Belle2;
15 using namespace std;
16 
18  m_logConnection(logConnection),
19  m_previousMessage(LogConfig::c_Default, "", "", "", "", 0),
20  m_repeatCounter(0)
21 {
22 }
23 
24 
26 {
28 }
29 
30 
32 {
33  return (m_logConnection && m_logConnection->isConnected());
34 }
35 
36 
38 {
39 
40  if (message == m_previousMessage) {
42  // return true anyway since we will print the repeat message later so we
43  // consider this successful
44  return true;
45  }
46 
48  m_previousMessage = message;
49 
50  return m_logConnection->sendMessage(message);
51 }
52 
53 
55 {
56  if (m_repeatCounter > 0) {
57  const std::string message{" ... message repeated " + std::to_string(m_repeatCounter) + " times"};
58  LogMessage repeatMessage(m_previousMessage.getLogLevel(), message, "", "", "", 0);
59  repeatMessage.setLogInfo(LogConfig::c_Message);
60  m_logConnection->sendMessage(repeatMessage);
61  }
62  m_repeatCounter = 0;
63 }
Belle2::LogConnectionBase
Abstract base class for the different types of log connections.
Definition: LogConnectionBase.h:31
Belle2::LogConnectionFilter::sendMessage
bool sendMessage(const LogMessage &message) override
Sends a log message.
Definition: LogConnectionFilter.cc:37
Belle2::LogConnectionFilter::isConnected
bool isConnected() override
Returns true if the log connection could be established.
Definition: LogConnectionFilter.cc:31
Belle2::LogConnectionFilter::m_repeatCounter
int m_repeatCounter
Counter for repeated messages.
Definition: LogConnectionFilter.h:84
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::LogConnectionFilter::LogConnectionFilter
LogConnectionFilter(LogConnectionBase *logConnection)
The constructor.
Definition: LogConnectionFilter.cc:17
Belle2::LogMessage::setLogInfo
void setLogInfo(unsigned int logInfo)
Configure which information should be printed.
Definition: LogMessage.h:123
Belle2::LogConnectionFilter::m_logConnection
std::unique_ptr< LogConnectionBase > m_logConnection
The actual log connection.
Definition: LogConnectionFilter.h:82
Belle2::LogMessage::getLogLevel
LogConfig::ELogLevel getLogLevel() const
Returns the log level of the message.
Definition: LogMessage.h:99
Belle2::LogConfig::c_Message
@ c_Message
Log message text.
Definition: LogConfig.h:47
Belle2::LogConnectionFilter::m_previousMessage
LogMessage m_previousMessage
The previous log message.
Definition: LogConnectionFilter.h:83
Belle2::LogConnectionFilter::~LogConnectionFilter
virtual ~LogConnectionFilter()
The LogConnectionFilter destructor.
Definition: LogConnectionFilter.cc:25
Belle2::LogConfig
The LogConfig class.
Definition: LogConfig.h:32
Belle2::LogConnectionFilter::printRepetitions
void printRepetitions()
If there are repeated messages print the number of repetitions.
Definition: LogConnectionFilter.cc:54
Belle2::LogMessage
The LogMessage class.
Definition: LogMessage.h:39