Syslog client for mbed-os 5

Fork of logger by Suga koubou

Committer:
Colin Hogben
Date:
Fri Oct 14 15:58:13 2016 +0100
Revision:
5:641de66579d2
Parent:
logger.h@4:b51e0614c767
Child:
6:cf9acc20f954
Capitalise .h and .cpp

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Colin Hogben 3:91ee7ead8536 1 /*
Colin Hogben 3:91ee7ead8536 2 * syslog device library
Colin Hogben 3:91ee7ead8536 3 * Copyright (c) 2011 Hiroshi Suga
Colin Hogben 4:b51e0614c767 4 * Copyright (c) 2016 Colin Hogben
Colin Hogben 3:91ee7ead8536 5 * Released under the MIT License: http://mbed.org/license/mit
Colin Hogben 3:91ee7ead8536 6 */
Colin Hogben 3:91ee7ead8536 7
Colin Hogben 3:91ee7ead8536 8 /** @file logger.h
Colin Hogben 3:91ee7ead8536 9 * @brief syslog device (sender/client)
Colin Hogben 3:91ee7ead8536 10 */
Colin Hogben 3:91ee7ead8536 11
Colin Hogben 3:91ee7ead8536 12 #ifndef LOGGER_H
Colin Hogben 3:91ee7ead8536 13 #define LOGGER_H
Colin Hogben 3:91ee7ead8536 14
Colin Hogben 3:91ee7ead8536 15 #include "mbed.h"
Colin Hogben 3:91ee7ead8536 16 #include "NetworkInterface.h"
Colin Hogben 3:91ee7ead8536 17 #include "UDPSocket.h"
Colin Hogben 3:91ee7ead8536 18
Colin Hogben 3:91ee7ead8536 19 /**
Colin Hogben 3:91ee7ead8536 20 * @enum Severity of priority
Colin Hogben 3:91ee7ead8536 21 */
Colin Hogben 3:91ee7ead8536 22 enum LOG_SEVERITY {
Colin Hogben 3:91ee7ead8536 23 LOG_EMERG = 0, /* system is unusable */
Colin Hogben 3:91ee7ead8536 24 LOG_ALERT = 1, /* action must be taken immediately */
Colin Hogben 3:91ee7ead8536 25 LOG_CRIT = 2, /* critical conditions */
Colin Hogben 3:91ee7ead8536 26 LOG_ERR = 3, /* error conditions */
Colin Hogben 3:91ee7ead8536 27 LOG_WARNING = 4, /* warning conditions */
Colin Hogben 3:91ee7ead8536 28 LOG_NOTICE = 5, /* normal but significant condition */
Colin Hogben 3:91ee7ead8536 29 LOG_INFO = 6, /* informational */
Colin Hogben 3:91ee7ead8536 30 LOG_DEBUG = 7, /* debug-level messages */
Colin Hogben 3:91ee7ead8536 31 };
Colin Hogben 3:91ee7ead8536 32
Colin Hogben 3:91ee7ead8536 33 /**
Colin Hogben 3:91ee7ead8536 34 * @enum Facility of priority
Colin Hogben 3:91ee7ead8536 35 */
Colin Hogben 3:91ee7ead8536 36 enum LOG_FACILITY {
Colin Hogben 3:91ee7ead8536 37 LOG_KERN = 0, /* kernel messages */
Colin Hogben 3:91ee7ead8536 38 LOG_USER = 1, /* user-level messages */
Colin Hogben 3:91ee7ead8536 39 LOG_MAIL = 2, /* mail system */
Colin Hogben 3:91ee7ead8536 40 LOG_DAEMON = 3, /* system daemons */
Colin Hogben 3:91ee7ead8536 41 LOG_AUTH = 4, /* authorization messages */
Colin Hogben 3:91ee7ead8536 42 LOG_SYSLOG = 5, /* messages generated internally by syslogd */
Colin Hogben 3:91ee7ead8536 43 LOG_LPR = 6, /* line printer subsystem */
Colin Hogben 3:91ee7ead8536 44 LOG_NEWS = 7, /* network news subsystem */
Colin Hogben 3:91ee7ead8536 45 LOG_UUCP = 8, /* UUCP subsystem */
Colin Hogben 3:91ee7ead8536 46 LOG_CRON = 9, /* clock daemon */
Colin Hogben 3:91ee7ead8536 47 LOG_AUTHPRIV = 10, /* authorization messages = private */
Colin Hogben 3:91ee7ead8536 48 LOG_FTP = 11, /* ftp daemon */
Colin Hogben 3:91ee7ead8536 49 LOG_NTP = 12, /* NTP subsystem */
Colin Hogben 3:91ee7ead8536 50 LOG_SECURITY = 13, /* security subsystems (audit) */
Colin Hogben 3:91ee7ead8536 51 LOG_CONSOLE = 14, /* /dev/console output (alert) */
Colin Hogben 3:91ee7ead8536 52 LOG_CLOCK = 15, /* clock daemon */
Colin Hogben 3:91ee7ead8536 53 LOG_LOCAL0 = 16, /* reserved for local use */
Colin Hogben 3:91ee7ead8536 54 LOG_LOCAL1 = 17, /* reserved for local use */
Colin Hogben 3:91ee7ead8536 55 LOG_LOCAL2 = 18, /* reserved for local use */
Colin Hogben 3:91ee7ead8536 56 LOG_LOCAL3 = 19, /* reserved for local use */
Colin Hogben 3:91ee7ead8536 57 LOG_LOCAL4 = 20, /* reserved for local use */
Colin Hogben 3:91ee7ead8536 58 LOG_LOCAL5 = 21, /* reserved for local use */
Colin Hogben 3:91ee7ead8536 59 LOG_LOCAL6 = 22, /* reserved for local use */
Colin Hogben 3:91ee7ead8536 60 LOG_LOCAL7 = 23, /* reserved for local use */
Colin Hogben 3:91ee7ead8536 61 };
Colin Hogben 3:91ee7ead8536 62
Colin Hogben 3:91ee7ead8536 63 /** brief syslog device (sender/client)
Colin Hogben 3:91ee7ead8536 64 */
Colin Hogben 3:91ee7ead8536 65 class Logger {
Colin Hogben 3:91ee7ead8536 66 public:
Colin Hogben 3:91ee7ead8536 67 /** init logger class
Colin Hogben 3:91ee7ead8536 68 * @param p_eth EthernetNetIf class
Colin Hogben 3:91ee7ead8536 69 * @param host syslog collctor (server)
Colin Hogben 3:91ee7ead8536 70 */
Colin Hogben 3:91ee7ead8536 71 Logger(NetworkInterface *, const char *);
Colin Hogben 3:91ee7ead8536 72
Colin Hogben 3:91ee7ead8536 73 /** init logger class
Colin Hogben 3:91ee7ead8536 74 * @param p_eth EthernetNetIf class
Colin Hogben 3:91ee7ead8536 75 * @param host syslog collctor (server) hostname or IP address
Colin Hogben 3:91ee7ead8536 76 * @param myname My hostname or IP address
Colin Hogben 3:91ee7ead8536 77 */
Colin Hogben 3:91ee7ead8536 78 Logger(NetworkInterface *, const char *, const char *);
Colin Hogben 3:91ee7ead8536 79
Colin Hogben 3:91ee7ead8536 80 /** Send the message
Colin Hogben 3:91ee7ead8536 81 * @param tag Process name
Colin Hogben 3:91ee7ead8536 82 * @param content Message
Colin Hogben 3:91ee7ead8536 83 */
Colin Hogben 3:91ee7ead8536 84 void send(LOG_SEVERITY, LOG_FACILITY, const char *, const char *);
Colin Hogben 3:91ee7ead8536 85
Colin Hogben 3:91ee7ead8536 86 /** Send the message
Colin Hogben 3:91ee7ead8536 87 * @param sev Severity
Colin Hogben 3:91ee7ead8536 88 * @param fac Facility
Colin Hogben 3:91ee7ead8536 89 * @param tag Process name
Colin Hogben 3:91ee7ead8536 90 * @param content Message
Colin Hogben 3:91ee7ead8536 91 */
Colin Hogben 3:91ee7ead8536 92 void send(const char *, const char *);
Colin Hogben 3:91ee7ead8536 93
Colin Hogben 4:b51e0614c767 94 private:
Colin Hogben 4:b51e0614c767 95 void _Logger(NetworkInterface *netif, const char *host, const char *myname);
Colin Hogben 4:b51e0614c767 96
Colin Hogben 4:b51e0614c767 97 private:
Colin Hogben 3:91ee7ead8536 98 UDPSocket _udpsock;
Colin Hogben 3:91ee7ead8536 99 SocketAddress _remote;
Colin Hogben 3:91ee7ead8536 100 char _ident[32];
Colin Hogben 3:91ee7ead8536 101 };
Colin Hogben 3:91ee7ead8536 102
Colin Hogben 3:91ee7ead8536 103 #endif
Colin Hogben 3:91ee7ead8536 104