Browse Source

Add proper logging

Baptiste Jonglez 7 years ago
parent
commit
d69913b47e
6 changed files with 37 additions and 1 deletions
  1. 3 0
      .gitignore
  2. 8 1
      Makefile
  3. 3 0
      src/load.cc
  4. 3 0
      src/logger.cc
  5. 11 0
      src/logger.h
  6. 9 0
      src/messages.mes

+ 3 - 0
.gitignore

@@ -1,3 +1,6 @@
 *.o
 *.so
 *~
+s-messages
+src/messages.cc
+src/messages.h

+ 8 - 1
Makefile

@@ -1,5 +1,5 @@
 
-OBJECTS = src/load.o src/runscript.o src/callouts.o src/version.o
+OBJECTS = src/messages.o src/logger.o src/load.o src/runscript.o src/callouts.o src/version.o
 CXXFLAGS = -I /usr/include/kea -fPIC -Wno-deprecated
 LDFLAGS = -L /usr/lib/kea/lib -shared -lkea-dhcpsrv -lkea-dhcp++ -lkea-hooks -lkea-log -lkea-util -lkea-exceptions
 
@@ -9,10 +9,17 @@ kea-hook-runscript.so: $(OBJECTS)
 %.o: %.cc
 	g++ -c $(CXXFLAGS) -o $@ $<
 
+# Compile messages (for logging)
+src/messages.h src/messages.cc: s-messages
+s-messages: src/messages.mes
+	kea-msg-compiler -d src/ $<
+	touch $@
+
 src/callouts.o: src/runscript.h
 src/load.o: src/common.h
 src/runscript.o: src/common.h
 
 clean:
 	rm -f src/*.o
+	rm -f src/messages.h src/messages.cc s-messages
 	rm -f kea-auth-radius.so

+ 3 - 0
src/load.cc

@@ -1,5 +1,6 @@
 #include <hooks/hooks.h>
 
+#include "logger.h"
 #include "common.h"
 
 using namespace isc::hooks;
@@ -16,9 +17,11 @@ extern "C" {
 int load(LibraryHandle& handle) {
     ConstElementPtr script = handle.getParameter("script");
     if (!script) {
+        LOG_ERROR(runscript_logger, RUNSCRIPT_MISSING_PARAM).arg("script");
         return 1;
     }
     if (script->getType() != Element::string) {
+        LOG_ERROR(runscript_logger, RUNSCRIPT_MISTYPED_PARAM).arg("script");
         return 1;
     }
     script_path = script->stringValue();

+ 3 - 0
src/logger.cc

@@ -0,0 +1,3 @@
+#include "logger.h"
+
+isc::log::Logger runscript_logger("hook-runscript");

+ 11 - 0
src/logger.h

@@ -0,0 +1,11 @@
+#ifndef RUNSCRIPT_LOGGER_H
+#define RUNSCRIPT_LOGGER_H
+#include <log/logger.h>
+#include <log/message_initializer.h>
+#include <log/macros.h>
+
+#include "messages.h"
+
+extern isc::log::Logger runscript_logger;
+
+#endif

+ 9 - 0
src/messages.mes

@@ -0,0 +1,9 @@
+% RUNSCRIPT_MISSING_PARAM required parameter "%1" missing in configuration
+A required parameter of this library hook is missing in the configuration,
+which prevents the library from working correctly.
+
+% RUNSCRIPT_MISTYPED_PARAM parameter "%1" in configuration has wrong type
+A parameter of this library hook is defined in the configuration but has the
+wrong type.  For instance, a string may have been passed as parameter while
+an integer was expected.
+