added functions nxlog_debug_tag2 and nxlog_debug_tag_object
authorVictor Kirhenshtein <victor@netxms.org>
Thu, 19 Oct 2017 09:50:37 +0000 (12:50 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Thu, 19 Oct 2017 09:50:37 +0000 (12:50 +0300)
include/nms_util.h
src/libnetxms/log.cpp

index 8704473..7cd128a 100644 (file)
@@ -2456,8 +2456,10 @@ void LIBNETXMS_EXPORTABLE nxlog_close();
 void LIBNETXMS_EXPORTABLE nxlog_write(DWORD msg, WORD wType, const char *format, ...);
 void LIBNETXMS_EXPORTABLE nxlog_write_generic(WORD type, const TCHAR *format, ...);
 void LIBNETXMS_EXPORTABLE nxlog_debug(int level, const TCHAR *format, ...);
-void LIBNETXMS_EXPORTABLE nxlog_debug_tag(const TCHAR *tag, int level, const TCHAR *format, ...);
 void LIBNETXMS_EXPORTABLE nxlog_debug2(int level, const TCHAR *format, va_list args);
+void LIBNETXMS_EXPORTABLE nxlog_debug_tag(const TCHAR *tag, int level, const TCHAR *format, ...);
+void LIBNETXMS_EXPORTABLE nxlog_debug_tag2(const TCHAR *tag, int level, const TCHAR *format, va_list args);
+void LIBNETXMS_EXPORTABLE nxlog_debug_tag_object(const TCHAR *tag, UINT32 objectId, int level, const TCHAR *format, ...);
 bool LIBNETXMS_EXPORTABLE nxlog_set_rotation_policy(int rotationMode, UINT64 maxLogSize, int historySize, const TCHAR *dailySuffix);
 bool LIBNETXMS_EXPORTABLE nxlog_rotate();
 void LIBNETXMS_EXPORTABLE nxlog_set_debug_level(int level);
index 31a9e65..18bcd81 100644 (file)
@@ -909,11 +909,8 @@ void LIBNETXMS_EXPORTABLE nxlog_debug2(int level, const TCHAR *format, va_list a
 /**
  * Write debug message with tag
  */
-void LIBNETXMS_EXPORTABLE nxlog_debug_tag(const TCHAR *tag, int level, const TCHAR *format, ...)
+static void nxlog_debug_tag_internal(const TCHAR *tag, int level, const TCHAR *format, va_list args)
 {
-   if (level > nxlog_get_debug_level_tag(tag))
-      return;
-
    TCHAR tagf[16];
    int i;
    for(i = 0; (i < 15) && tag[i] != 0; i++)
@@ -922,13 +919,51 @@ void LIBNETXMS_EXPORTABLE nxlog_debug_tag(const TCHAR *tag, int level, const TCH
       tagf[i] = ' ';
    tagf[i] = 0;
 
-   va_list args;
-   va_start(args, format);
    TCHAR buffer[8192];
    _vsntprintf(buffer, 8192, format, args);
-   va_end(args);
    nxlog_write(s_debugMsgTag, NXLOG_DEBUG, "ss", tagf, buffer);
 
    if (s_debugWriter != NULL)
       s_debugWriter(tag, buffer);
 }
+
+/**
+ * Write debug message with tag
+ */
+void LIBNETXMS_EXPORTABLE nxlog_debug_tag(const TCHAR *tag, int level, const TCHAR *format, ...)
+{
+   if (level > nxlog_get_debug_level_tag(tag))
+      return;
+
+   va_list args;
+   va_start(args, format);
+   nxlog_debug_tag_internal(tag, level, format, args);
+   va_end(args);
+}
+
+/**
+ * Write debug message with tag
+ */
+void LIBNETXMS_EXPORTABLE nxlog_debug_tag2(const TCHAR *tag, int level, const TCHAR *format, va_list args)
+{
+   if (level > nxlog_get_debug_level_tag(tag))
+      return;
+
+   nxlog_debug_tag_internal(tag, level, format, args);
+}
+
+/**
+ * Write debug message with tag and object ID (added as last part of a tag)
+ */
+void LIBNETXMS_EXPORTABLE nxlog_debug_tag_object(const TCHAR *tag, UINT32 objectId, int level, const TCHAR *format, ...)
+{
+   TCHAR fullTag[256];
+   _sntprintf(fullTag, 256, _T("%s.%u"), tag, objectId);
+   if (level > nxlog_get_debug_level_tag(fullTag))
+      return;
+
+   va_list args;
+   va_start(args, format);
+   nxlog_debug_tag_internal(fullTag, level, format, args);
+   va_end(args);
+}