ifw-core  5.0.0-pre2
logging.hpp
Go to the documentation of this file.
1 
9 #ifndef CORE_PROTOCOL_OPEN62541_LOGGING_H_
10 #define CORE_PROTOCOL_OPEN62541_LOGGING_H_
11 
12 // System headers
13 #include <iostream>
14 
15 // Third party libraries
16 
17 #include <log4cplus/logger.h>
18 #include <log4cplus/loggingmacros.h>
19 #include <log4cplus/logger.h>
20 
21 #include <open62541.h>
22 
23 namespace protocol::opcua {
24 static constexpr const char* LOGGER_NAME = "open62541";
25 }
26 
27 static void CustomOpen62541Log(
28  void *logContext, UA_LogLevel level, UA_LogCategory category, const char *msg, va_list args) {
29  static log4cplus::Logger logger = log4cplus::Logger::getInstance("open62541");
30 
31  char buffer[1024] = {};
32  auto bufferSize = sizeof(buffer);
33  auto retVal = vsnprintf(buffer, bufferSize, msg, args);
34  if (retVal < 0) {
35  std::cerr << "Logging message to big for the allocated buffer\n";
36  return;
37  }
38 
39  if (level == UA_LOGLEVEL_TRACE) {
40  LOG4CPLUS_TRACE(logger, buffer);
41  } else if (level == UA_LOGLEVEL_DEBUG) {
42  LOG4CPLUS_DEBUG(logger, buffer);
43  } else if (level == UA_LOGLEVEL_INFO) {
44  LOG4CPLUS_INFO(logger, buffer);
45  } else if (level == UA_LOGLEVEL_WARNING) {
46  LOG4CPLUS_WARN(logger, buffer);
47  } else if (level == UA_LOGLEVEL_ERROR) {
48  LOG4CPLUS_ERROR(logger, buffer);
49  } else if (level == UA_LOGLEVEL_FATAL) {
50  LOG4CPLUS_FATAL(logger, buffer);
51  }
52 }
53 
54 static void CustomOpen62541LogClear(void *logContext) {}
55 
56 const UA_Logger CustomLogger =
57 { CustomOpen62541Log, nullptr, CustomOpen62541LogClear };
58 
59 
60 
61 #endif // CORE_PROTOCOL_OPEN62541_LOGGING_H_
const UA_Logger CustomLogger
Definition: logging.hpp:56
log4cplus::Logger & Logger()
Definition: defines.cpp:13
Definition: iDataChangeHandler.hpp:25