log CHANGE libssh logging set separately

For 2 reasons, it has more verbose levels
than libnetconf2 and it also must be set
for every thread separately.
diff --git a/src/log.c b/src/log.c
index e1c3988..f75fb7d 100644
--- a/src/log.c
+++ b/src/log.c
@@ -17,7 +17,12 @@
 
 #include <libyang/libyang.h>
 
+#ifdef NC_ENABLED_SSH
+    #include <libssh/libssh.h>
+#endif
+
 #include "libnetconf.h"
+#include "log.h"
 
 /**
  * @brief libnetconf verbose level variable
@@ -31,9 +36,6 @@
 {
     verbose_level = level;
     ly_verb((LY_LOG_LEVEL)level);
-#ifdef NC_ENABLED_SSH
-    ssh_set_log_level(level);
-#endif
 }
 
 struct {
@@ -46,6 +48,16 @@
     {NC_VERB_DEBUG, "DEBUG"}
 };
 
+#ifdef NC_ENABLED_SSH
+
+API void
+nc_libssh_thread_verbosity(int level)
+{
+    ssh_set_log_level(level);
+}
+
+#endif
+
 static void
 prv_vprintf(NC_VERB_LEVEL level, const char *format, va_list args)
 {
diff --git a/src/log.h b/src/log.h
index 8180fa9..cc3c9a8 100644
--- a/src/log.h
+++ b/src/log.h
@@ -39,6 +39,27 @@
  */
 void nc_verbosity(NC_VERB_LEVEL level);
 
+#ifdef NC_ENABLED_SSH
+
+/**
+ * @brief Set libssh verbosity level.
+ *
+ * libssh verbosity is set separately because it defines more verbose levels than libnetconf2.
+ * Also, you need to set this for every thread unlike libnetconf verbosity.
+ *
+ * Values:
+ * - 0 - no logging,
+ * - 1 - rare conditions or warnings,
+ * - 2 - API-accessible entrypoints,
+ * - 3 - packet id and size,
+ * - 4 - functions entering and leaving.
+ *
+ * @param[in] level libssh verbosity level.
+ */
+void nc_libssh_thread_verbosity(int level);
+
+#endif
+
 /**
  * @brief Set libnetconf's print callback.
  *
diff --git a/src/session.c b/src/session.c
index 1799782..c04d74d 100644
--- a/src/session.c
+++ b/src/session.c
@@ -995,7 +995,6 @@
 {
     ssh_threads_set_callbacks(ssh_threads_get_pthread());
     ssh_init();
-    ssh_set_log_level(verbose_level);
 }
 
 static void