Provide function to convert log severity to string.
[trust_router.git] / common / tr_debug.c
index 3964518..6981213 100644 (file)
@@ -73,7 +73,11 @@ static void vfire_log(const int sev, const int facility, const char *fmt, va_lis
     char *buf = malloc(LOG_MAX_MESSAGE_SIZE);
     vsnprintf(buf, LOG_MAX_MESSAGE_SIZE, fmt, ap_copy);
 
-    syslog(LOG_MAKEPRI(facility, sev), "%s", buf);
+    /* syslog.h provides a macro for generating priorities, however in versions of glibc < 2.17 it is
+       broken if you use it as documented: https://sourceware.org/bugzilla/show_bug.cgi?id=14347
+       RHEL6 uses glibc 2.12, so do not use LOG_MAKEPRI until around 2020.
+    */
+    syslog((facility|sev), "%s", buf);
 
     free(buf);
   }
@@ -158,37 +162,51 @@ static char *join_audit_msg(const int count, char *array[]) {
   return buf;
 }
 
+const char *sev2str(int sev)
+{
+  switch (sev) {
+  case LOG_DEBUG:   return "debug";
+  case LOG_INFO:    return "info";
+  case LOG_NOTICE:  return "notice";
+  case LOG_WARNING: return "warning";
+  case LOG_ERR:     return "err";
+  case LOG_CRIT:    return "crit";
+  case LOG_ALERT:   return "alert";
+  default:          return "invalid";
+  }
+}
+
 int str2sev(const char* sev) {
 
-  if (strcmp(sev, "debug")) {
+  if (strcmp(sev, "debug") ==0 ) {
 
     return LOG_DEBUG;
   }
-  else if (strcmp(sev, "info")) {
+  else if (strcmp(sev, "info") == 0) {
 
     return LOG_INFO;
   }
-  else if (strcmp(sev, "notice")) {
+  else if (strcmp(sev, "notice") == 0) {
 
     return LOG_NOTICE;
   }
-  else if (strcmp(sev, "warning")) {
+  else if (strcmp(sev, "warning") == 0 ) {
 
     return LOG_WARNING;
   }
-  else if (strcmp(sev, "err")) {
+  else if (strcmp(sev, "err") == 0) {
 
     return LOG_ERR;
   }
-  else if (strcmp(sev, "crit")) {
+  else if (strcmp(sev, "crit") == 0) {
 
     return LOG_CRIT;
   }
-  else if (strcmp(sev, "alert")) {
+  else if (strcmp(sev, "alert") == 0) {
 
     return LOG_ALERT;
   }
-  else if (strcmp(sev, "emerg")) {
+  else if (strcmp(sev, "emerg")  == 0) {
 
     return LOG_EMERG;
   }
@@ -227,8 +245,6 @@ void tr_log_close() {
 
 void tr_log(const int sev, const char *fmt, ...) {
 
-  tr_log_open();
-
   if (NULL != fmt) {
 
     va_list ap;
@@ -248,8 +264,6 @@ void tr_log(const int sev, const char *fmt, ...) {
 
 void tr_audit_resp(TID_RESP *resp) {
 
-  tr_log_open();
-
   if (NULL != resp) {
 
     char *attrs[] = { audit_fmt("result", resp->result ? "error" : "success"),
@@ -274,8 +288,6 @@ void tr_audit_resp(TID_RESP *resp) {
 
 void tr_audit_req(TID_REQ *req) {
 
-  tr_log_open();
-
   if (NULL != req) {
 
     char *attrs[] = { audit_fmt("comm", NULL != req->comm ? req->comm->buf : NULL),