Преглед на файлове

Session: Print complete NodeId for the SessionToken

Julius Pfrommer преди 5 години
родител
ревизия
02734c310d
променени са 2 файла, в които са добавени 26 реда и са изтрити 51 реда
  1. 16 47
      src/server/ua_session.h
  2. 10 4
      src/server/ua_session_manager.c

+ 16 - 47
src/server/ua_session.h

@@ -98,65 +98,34 @@ UA_PublishResponseEntry* UA_Session_dequeuePublishReq(UA_Session *session);
  * zero arguments. So we add a dummy argument that is not printed (%.0s is
  * string of length zero). */
 
-#define UA_LOG_TRACE_SESSION_INTERNAL(LOGGER, SESSION, MSG, ...)        \
-    UA_LOG_TRACE(LOGGER, UA_LOGCATEGORY_SESSION,                        \
-                 "Connection %i | SecureChannel %i | Session " UA_PRINTF_GUID_FORMAT " | " MSG "%.0s", \
-                 ((SESSION)->header.channel ? ((SESSION)->header.channel->connection ? (SESSION)->header.channel->connection->sockfd : 0) : 0), \
-                 ((SESSION)->header.channel ? (SESSION)->header.channel->securityToken.channelId : 0), \
-                 UA_PRINTF_GUID_DATA((SESSION)->sessionId.identifier.guid), __VA_ARGS__)
+#define UA_LOG_SESSION_INTERNAL(LOGGER, LEVEL, SESSION, MSG, ...) do {  \
+        UA_String idString = UA_STRING_NULL;                            \
+        UA_NodeId_toString(&(SESSION)->sessionId, &idString);           \
+        UA_LOG_##LEVEL(LOGGER, UA_LOGCATEGORY_SESSION,                  \
+                       "Connection %i | SecureChannel %i | Session %.*s | " MSG "%.0s", \
+                       ((SESSION)->header.channel ? ((SESSION)->header.channel->connection ? (SESSION)->header.channel->connection->sockfd : 0) : 0), \
+                       ((SESSION)->header.channel ? (SESSION)->header.channel->securityToken.channelId : 0), \
+                       (int)idString.length, idString.data, __VA_ARGS__); \
+        UA_String_deleteMembers(&idString);                             \
+    } while(0)
 
 #define UA_LOG_TRACE_SESSION(LOGGER, SESSION, ...)                      \
-    UA_MACRO_EXPAND(UA_LOG_TRACE_SESSION_INTERNAL(LOGGER, SESSION, __VA_ARGS__, ""))
-
-#define UA_LOG_DEBUG_SESSION_INTERNAL(LOGGER, SESSION, MSG, ...)        \
-    UA_LOG_DEBUG(LOGGER, UA_LOGCATEGORY_SESSION,                        \
-                 "Connection %i | SecureChannel %i | Session " UA_PRINTF_GUID_FORMAT " | " MSG "%.0s", \
-                 ((SESSION)->header.channel ? ((SESSION)->header.channel->connection ? (SESSION)->header.channel->connection->sockfd : 0) : 0), \
-                 ((SESSION)->header.channel ? (SESSION)->header.channel->securityToken.channelId : 0), \
-                 UA_PRINTF_GUID_DATA((SESSION)->sessionId.identifier.guid), __VA_ARGS__)
+    UA_MACRO_EXPAND(UA_LOG_SESSION_INTERNAL(LOGGER, TRACE, SESSION, __VA_ARGS__, ""))
 
 #define UA_LOG_DEBUG_SESSION(LOGGER, SESSION, ...)                      \
-    UA_MACRO_EXPAND(UA_LOG_DEBUG_SESSION_INTERNAL(LOGGER, SESSION, __VA_ARGS__, ""))
-
-#define UA_LOG_INFO_SESSION_INTERNAL(LOGGER, SESSION, MSG, ...)        \
-    UA_LOG_INFO(LOGGER, UA_LOGCATEGORY_SESSION,                        \
-                 "Connection %i | SecureChannel %i | Session " UA_PRINTF_GUID_FORMAT " | " MSG "%.0s", \
-                 ((SESSION)->header.channel ? ((SESSION)->header.channel->connection ? (SESSION)->header.channel->connection->sockfd : 0) : 0), \
-                 ((SESSION)->header.channel ? (SESSION)->header.channel->securityToken.channelId : 0), \
-                 UA_PRINTF_GUID_DATA((SESSION)->sessionId.identifier.guid), __VA_ARGS__)
+    UA_MACRO_EXPAND(UA_LOG_SESSION_INTERNAL(LOGGER, DEBUG, SESSION, __VA_ARGS__, ""))
 
 #define UA_LOG_INFO_SESSION(LOGGER, SESSION, ...)                      \
-    UA_MACRO_EXPAND(UA_LOG_INFO_SESSION_INTERNAL(LOGGER, SESSION, __VA_ARGS__, ""))
-
-#define UA_LOG_WARNING_SESSION_INTERNAL(LOGGER, SESSION, MSG, ...)        \
-    UA_LOG_WARNING(LOGGER, UA_LOGCATEGORY_SESSION,                        \
-                 "Connection %i | SecureChannel %i | Session " UA_PRINTF_GUID_FORMAT " | " MSG "%.0s", \
-                 ((SESSION)->header.channel ? ((SESSION)->header.channel->connection ? (SESSION)->header.channel->connection->sockfd : 0) : 0), \
-                 ((SESSION)->header.channel ? (SESSION)->header.channel->securityToken.channelId : 0), \
-                 UA_PRINTF_GUID_DATA((SESSION)->sessionId.identifier.guid), __VA_ARGS__)
+    UA_MACRO_EXPAND(UA_LOG_SESSION_INTERNAL(LOGGER, INFO, SESSION, __VA_ARGS__, ""))
 
 #define UA_LOG_WARNING_SESSION(LOGGER, SESSION, ...)                      \
-    UA_MACRO_EXPAND(UA_LOG_WARNING_SESSION_INTERNAL(LOGGER, SESSION, __VA_ARGS__, ""))
-
-#define UA_LOG_ERROR_SESSION_INTERNAL(LOGGER, SESSION, MSG, ...)        \
-    UA_LOG_ERROR(LOGGER, UA_LOGCATEGORY_SESSION,                        \
-                 "Connection %i | SecureChannel %i | Session " UA_PRINTF_GUID_FORMAT " | " MSG "%.0s", \
-                 ((SESSION)->header.channel ? ((SESSION)->header.channel->connection ? (SESSION)->header.channel->connection->sockfd : 0) : 0), \
-                 ((SESSION)->header.channel ? (SESSION)->header.channel->securityToken.channelId : 0), \
-                 UA_PRINTF_GUID_DATA((SESSION)->sessionId.identifier.guid), __VA_ARGS__)
+    UA_MACRO_EXPAND(UA_LOG_SESSION_INTERNAL(LOGGER, WARNING, SESSION, __VA_ARGS__, ""))
 
 #define UA_LOG_ERROR_SESSION(LOGGER, SESSION, ...)                      \
-    UA_MACRO_EXPAND(UA_LOG_ERROR_SESSION_INTERNAL(LOGGER, SESSION, __VA_ARGS__, ""))
-
-#define UA_LOG_FATAL_SESSION_INTERNAL(LOGGER, SESSION, MSG, ...)        \
-    UA_LOG_FATAL(LOGGER, UA_LOGCATEGORY_SESSION,                        \
-                 "Connection %i | SecureChannel %i | Session " UA_PRINTF_GUID_FORMAT " | " MSG "%.0s", \
-                 ((SESSION)->header.channel ? ((SESSION)->header.channel->connection ? (SESSION)->header.channel->connection->sockfd : 0) : 0), \
-                 ((SESSION)->header.channel ? (SESSION)->header.channel->securityToken.channelId : 0), \
-                 UA_PRINTF_GUID_DATA((SESSION)->sessionId.identifier.guid), __VA_ARGS__)
+    UA_MACRO_EXPAND(UA_LOG_SESSION_INTERNAL(LOGGER, ERROR, SESSION, __VA_ARGS__, ""))
 
 #define UA_LOG_FATAL_SESSION(LOGGER, SESSION, ...)                      \
-    UA_MACRO_EXPAND(UA_LOG_FATAL_SESSION_INTERNAL(LOGGER, SESSION, __VA_ARGS__, ""))
+    UA_MACRO_EXPAND(UA_LOG_SESSION_INTERNAL(LOGGER, FATAL, SESSION, __VA_ARGS__, ""))
 
 #ifdef __cplusplus
 } // extern "C"

+ 10 - 4
src/server/ua_session_manager.c

@@ -100,9 +100,12 @@ UA_SessionManager_getSessionByToken(UA_SessionManager *sm, const UA_NodeId *toke
     }
 
     /* Session not found */
+    UA_String nodeIdStr = UA_STRING_NULL;
+    UA_NodeId_toString(token, &nodeIdStr);
     UA_LOG_INFO(sm->server->config.logger, UA_LOGCATEGORY_SESSION,
-                "Try to use Session with token " UA_PRINTF_GUID_FORMAT " but is not found",
-                UA_PRINTF_GUID_DATA(token->identifier.guid));
+                "Try to use Session with token %.*s but is not found",
+                (int)nodeIdStr.length, nodeIdStr.data);
+    UA_String_deleteMembers(&nodeIdStr);
     return NULL;
 }
 
@@ -126,9 +129,12 @@ UA_SessionManager_getSessionById(UA_SessionManager *sm, const UA_NodeId *session
     }
 
     /* Session not found */
+    UA_String sessionIdStr = UA_STRING_NULL;
+    UA_NodeId_toString(sessionId, &sessionIdStr);
     UA_LOG_INFO(sm->server->config.logger, UA_LOGCATEGORY_SESSION,
-                "Try to use Session with identifier " UA_PRINTF_GUID_FORMAT " but is not found",
-                UA_PRINTF_GUID_DATA(sessionId->identifier.guid));
+                "Try to use Session with identifier %.*s but is not found",
+                (int)sessionIdStr.length, sessionIdStr.data);
+    UA_String_deleteMembers(&sessionIdStr);
     return NULL;
 }