commit 7beeaadce6162ff57341649124685406a5d4a8ff Author: JDierkse Date: Thu Feb 6 08:54:57 2020 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..233b8d0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.o.* +*.d.* +*.a.* +.*.swp +.AppleDouble +lib +fixPermissions.sh diff --git a/Logging/Logging.cpp b/Logging/Logging.cpp new file mode 100644 index 0000000..1360fb1 --- /dev/null +++ b/Logging/Logging.cpp @@ -0,0 +1,79 @@ +#include +#include +#include +#include +#include "Logging.h" + + +namespace Logging { + +void OpenLog() +{ + openlog(NULL, LOG_CONS | LOG_NDELAY | LOG_PID, LOG_USER); +} + +void CloseLog() +{ + closelog(); +} + +void SetLogMask(Severity::type severity) +{ + int level = static_cast(severity); + setlogmask(LOG_UPTO(level)); + + switch (level) + { + case LOG_EMERG: + Syslog(LOG_EMERG, "LogMask set to LOG_EMERG\n"); + break; + case LOG_ALERT: + Syslog(LOG_ALERT, "LogMask set to LOG_ALERT\n"); + break; + case LOG_CRIT: + Syslog(LOG_CRIT, "LogMask set to LOG_CRIT\n"); + break; + case LOG_ERR: + Syslog(LOG_ERR, "LogMask set to LOG_ERR\n"); + break; + case LOG_WARNING: + Syslog(LOG_WARNING, "LogMask set to LOG_WARNING\n"); + break; + case LOG_NOTICE: + Syslog(LOG_NOTICE, "LogMask set to LOG_NOTICE\n"); + break; + case LOG_INFO: + Syslog(LOG_NOTICE, "LogMask set to LOG_INFO\n"); + break; + case LOG_DEBUG: + Syslog(LOG_NOTICE, "LogMask set to LOG_DEBUG\n"); + break; + } +} + +void Log(Severity::type severity, const std::string& message) +{ + if (severity > Severity::Error) + std::cout << message << std::endl; + else + std::cerr << message << std::endl; + + Syslog(static_cast(severity), "%s", message.c_str()); +} + +void Syslog(int level, const char *format, ...) +{ + va_list args; + va_start(args, format); + + vsyslog(level, format, args); + + if (level == LOG_DEBUG) + printf(" "); + + vprintf(format, args); + + va_end(args); +} + +} // namespace Logging diff --git a/Logging/Makefile b/Logging/Makefile new file mode 120000 index 0000000..d0b0e8e --- /dev/null +++ b/Logging/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 120000 index 0000000..6aa5187 --- /dev/null +++ b/Makefile @@ -0,0 +1 @@ +Makefiles/Makefile \ No newline at end of file diff --git a/Makefile.conf b/Makefile.conf new file mode 100644 index 0000000..98a5d49 --- /dev/null +++ b/Makefile.conf @@ -0,0 +1,7 @@ +# +# Makefile.conf +# + +CFLAGS += -I$(ROOTPATH) -I$(ROOTPATH)/include +DEBUGDIR := .debug + diff --git a/Makefile.target b/Makefile.target new file mode 100644 index 0000000..9c5d109 --- /dev/null +++ b/Makefile.target @@ -0,0 +1,12 @@ +# +# Makefile.target +# + +Logging.a.$(ARCH) : $(OBJECTS) + $(call build_target_library_arch,$@,$^) +Logging.a: + $(call build_target,$@) + +.DEFAULT_GOAL := Logging.a + +TARGETS += Logging.a diff --git a/Makefiles b/Makefiles new file mode 120000 index 0000000..2c30269 --- /dev/null +++ b/Makefiles @@ -0,0 +1 @@ +../../Makefiles \ No newline at end of file diff --git a/include/Logging.h b/include/Logging.h new file mode 100644 index 0000000..3e67aa7 --- /dev/null +++ b/include/Logging.h @@ -0,0 +1,42 @@ +#ifndef LOGGER_H +#define LOGGER_H + +#include + + +namespace Logging { + +#define LOG_EMERG 0 +#define LOG_ALERT 1 +#define LOG_CRIT 2 +#define LOG_ERR 3 +#define LOG_WARNING 4 +#define LOG_NOTICE 5 +#define LOG_INFO 6 +#define LOG_DEBUG 7 + +struct Severity +{ +public: + enum type + { + Emergency = LOG_EMERG, + Alert = LOG_ALERT, + Critical = LOG_CRIT, + Error = LOG_ERR, + Warning = LOG_WARNING, + Notice = LOG_NOTICE, + Info = LOG_INFO, + Debug = LOG_DEBUG + }; +}; + +void OpenLog(); +void CloseLog(); +void SetLogMask(Severity::type severity); +void Log(Severity::type severity, const std::string& message); +void Syslog(int level, const char *format, ...); + +} // namespace Logging + +#endif // LOGGING_LOGGER_H