24 #include <core/threading/mutex.h>
25 #include <netcomm/fawkes/component_ids.h>
26 #include <netcomm/fawkes/hub.h>
27 #include <netcomm/utils/ntoh64.h>
28 #include <netinet/in.h>
29 #include <network_logger/network_logger.h>
72 const char * component,
79 gettimeofday(&now, NULL);
83 NetworkLoggerMessageContent *content =
84 new NetworkLoggerMessageContent(level, t, component, is_exception, format, va);
86 for (ssit_ = subscribers_.begin(); ssit_ != subscribers_.end(); ++ssit_) {
87 NetworkLoggerMessageContent *content_copy =
new NetworkLoggerMessageContent(content);
90 }
catch (Exception &e) {
101 const char * component,
103 const char * message)
107 gettimeofday(&now, NULL);
111 NetworkLoggerMessageContent *content =
112 new NetworkLoggerMessageContent(level, t, component, is_exception, message);
114 for (ssit_ = subscribers_.begin(); ssit_ != subscribers_.end(); ++ssit_) {
115 NetworkLoggerMessageContent *content_copy =
new NetworkLoggerMessageContent(content);
118 }
catch (Exception &e) {
131 send_message(
LL_DEBUG, NULL, component,
false, format, va);
141 send_message(
LL_INFO, NULL, component,
false, format, va);
151 send_message(
LL_WARN, NULL, component,
false, format, va);
161 send_message(
LL_ERROR, NULL, component,
false, format, va);
170 va_start(arg, format);
179 va_start(arg, format);
188 va_start(arg, format);
197 va_start(arg, format);
208 send_message(
LL_DEBUG, NULL, component,
true, *i);
220 send_message(
LL_INFO, NULL, component,
true, *i);
232 send_message(
LL_WARN, NULL, component,
true, *i);
244 send_message(
LL_ERROR, NULL, component,
true, *i);
255 send_message(
LL_DEBUG, t, component,
false, format, va);
265 send_message(
LL_INFO, t, component,
false, format, va);
275 send_message(
LL_WARN, t, component,
false, format, va);
285 send_message(
LL_ERROR, t, component,
false, format, va);
294 va_start(arg, format);
303 va_start(arg, format);
312 va_start(arg, format);
321 va_start(arg, format);
332 send_message(
LL_DEBUG, t, component,
true, *i);
344 send_message(
LL_INFO, t, component,
true, *i);
356 send_message(
LL_WARN, t, component,
true, *i);
368 send_message(
LL_ERROR, t, component,
true, *i);
379 subscribers_.push_back(msg->
clid());
381 subscribers_.unique();
414 const char * component,
421 if ((tmplen = vasprintf(&tmp, format, va)) != -1) {
428 header->
time_sec = hton64(t->tv_sec);
450 const char * component,
452 const char * message)
461 header->
time_sec = hton64(t->tv_sec);
499 if (component_id != FAWKES_CID_NETWORKLOGGER) {
505 own_payload_ =
false;
526 rv.tv_sec = (time_t)ntoh64(header->time_sec);
527 rv.tv_usec = ntohl(header->time_usec);
564 return (header->exception == 1);
Message iterator for exceptions.
Base class for exceptions in Fawkes.
iterator begin()
Get iterator for messages.
iterator end()
Get end iterator for messages.
Network handler abstract base class.
virtual void send(FawkesNetworkMessage *msg)=0
Method to send a message to a specific client.
virtual void remove_handler(FawkesNetworkHandler *handler)=0
Remove a message handler.
virtual void add_handler(FawkesNetworkHandler *handler)=0
Add a message handler.
void copy_payload(size_t offset, const void *buf, size_t len)
Copy payload into payload buffer to a specified offset.
virtual size_t payload_size()
Return payload size.
size_t _payload_size
Payloda size.
void * _payload
Pointer to payload.
virtual void * payload()
Return pointer to payload.
Representation of a message that is sent over the network.
unsigned short int msgid() const
Get message type ID.
unsigned short int cid() const
Get component ID.
unsigned int clid() const
Get client ID.
virtual void unlock() const
Unlock list.
virtual void lock() const
Lock list.
void remove_locked(const Type &x)
Remove element from list with lock protection.
@ LL_INFO
informational output about normal procedures
@ LL_WARN
warning, should be investigated but software still functions, an example is that something was reques...
@ LL_ERROR
error, may be recoverable (software still running) or not (software has to terminate).
@ LL_DEBUG
debug output, relevant only when tracking down problems
LogLevel log_level
Minimum log level.
Message sent over the network with a log message.
NetworkLoggerMessageContent(Logger::LogLevel log_level, struct timeval *t, const char *component, bool is_exception, const char *message)
Constructor.
virtual ~NetworkLoggerMessageContent()
Destructor.
Logger::LogLevel get_loglevel() const
Log level.
virtual void serialize()
Serialize message content.
const char * get_message() const
Get message.
const char * get_component() const
Get component.
bool is_exception() const
Check if message was generated by exception.
virtual void client_disconnected(unsigned int clid)
Called when a client disconnected.
virtual void log_error(const char *component, const char *format,...)
Log error message.
virtual void vlog_error(const char *component, const char *format, va_list va)
Log error message.
virtual void log_warn(const char *component, const char *format,...)
Log warning message.
virtual void vtlog_error(struct timeval *t, const char *component, const char *format, va_list va)
Log error message for specific time.
virtual void vtlog_debug(struct timeval *t, const char *component, const char *format, va_list va)
Log debug message for specific time.
virtual void tlog_debug(struct timeval *t, const char *component, const char *format,...)
Log debug message for specific time.
virtual void vtlog_warn(struct timeval *t, const char *component, const char *format, va_list va)
Log warning message for specific time.
virtual void tlog_warn(struct timeval *t, const char *component, const char *format,...)
Log warning message for specific time.
virtual void tlog_info(struct timeval *t, const char *component, const char *format,...)
Log informational message for specific time.
virtual void vlog_info(const char *component, const char *format, va_list va)
Log informational message.
virtual void vlog_debug(const char *component, const char *format, va_list va)
Log debug message.
virtual void client_connected(unsigned int clid)
Called when a new client connected.
virtual void log_info(const char *component, const char *format,...)
Log informational message.
NetworkLogger(FawkesNetworkHub *hub, LogLevel log_level=LL_DEBUG)
Constructor.
@ MSGTYPE_SUBSCRIBE
Subscribe for logging messages.
@ MSGTYPE_LOGMESSAGE
Log message.
virtual void vlog_warn(const char *component, const char *format, va_list va)
Log warning message.
virtual void vtlog_info(struct timeval *t, const char *component, const char *format, va_list va)
Log informational message for specific time.
virtual void log_debug(const char *component, const char *format,...)
Log debug message.
virtual void handle_network_message(FawkesNetworkMessage *msg)
Called for incoming messages that are addressed to the correct component ID.
virtual void tlog_error(struct timeval *t, const char *component, const char *format,...)
Log error message for specific time.
virtual ~NetworkLogger()
Destructor.
Fawkes library namespace.