libyang REFACTOR major logging updates

Structured error information instead of a
single error message.
diff --git a/tests/utests/node/list.c b/tests/utests/node/list.c
index 987b416..0f172d2 100644
--- a/tests/utests/node/list.c
+++ b/tests/utests/node/list.c
@@ -169,8 +169,8 @@
             "leaf group{type string;}"
             "}");
     UTEST_INVALID_MODULE(schema, LYS_IN_YANG, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
-    CHECK_LOG_CTX("Invalid value \"-1\" of \"max-elements\".", "Line number 5.");
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Invalid value \"-1\" of \"max-elements\".", NULL, 5);
 
     schema = MODULE_CREATE_YANG("TERR_0", "list user {"
             "key uid;"
@@ -181,8 +181,8 @@
             "leaf group{type string;}"
             "}");
     UTEST_INVALID_MODULE(schema, LYS_IN_YANG, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
-    CHECK_LOG_CTX("Value \"4294967298\" is out of \"max-elements\" bounds.", "Line number 5.");
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Value \"4294967298\" is out of \"max-elements\" bounds.", NULL, 5);
 
     schema = MODULE_CREATE_YANG("TERR_0", "list user {"
             "key uid;"
@@ -193,7 +193,7 @@
             "leaf group{type string;}"
             "}");
     UTEST_INVALID_MODULE(schema, LYS_IN_YANG, NULL, LY_EVALID);
-    CHECK_LOG_CTX("List min-elements 20 is bigger than max-elements 10.", "Path \"/TERR_0:user\".");
+    CHECK_LOG_CTX("List min-elements 20 is bigger than max-elements 10.", "/TERR_0:user", 0);
 
     schema = MODULE_CREATE_YANG("TERR_0", "list user {"
             "key uid;"
@@ -204,8 +204,8 @@
             "leaf group{type string;}"
             "}");
     UTEST_INVALID_MODULE(schema, LYS_IN_YANG, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
-    CHECK_LOG_CTX("Invalid value \"-1\" of \"min-elements\".", "Line number 5.");
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Invalid value \"-1\" of \"min-elements\".", NULL, 5);
 
     schema = MODULE_CREATE_YANG("TERR_0", "list user {"
             "key uid;"
@@ -215,8 +215,8 @@
             "leaf group{type string;}"
             "}");
     UTEST_INVALID_MODULE(schema, LYS_IN_YANG, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
-    CHECK_LOG_CTX("Duplicate keyword \"key\".", "Line number 5.");
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Duplicate keyword \"key\".", NULL, 5);
 
     schema = MODULE_CREATE_YANG("T6", "list user {"
             "config false;"
@@ -282,8 +282,8 @@
             "leaf group{type string;}"
             "}");
     UTEST_INVALID_MODULE(schema, LYS_IN_YANG, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERROR0\" failed.", NULL);
-    CHECK_LOG_CTX("Invalid value \"systeme\" of \"ordered-by\".", "Line number 5.");
+    CHECK_LOG_CTX("Parsing module \"TERROR0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Invalid value \"systeme\" of \"ordered-by\".", NULL, 5);
 
     schema = MODULE_CREATE_YANG("TERROR0", "list \"\" {"
             "key uid;"
@@ -294,8 +294,8 @@
             "leaf group{type string;}"
             "}");
     UTEST_INVALID_MODULE(schema, LYS_IN_YANG, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERROR0\" failed.", NULL);
-    CHECK_LOG_CTX("Statement argument is required.", "Line number 5.");
+    CHECK_LOG_CTX("Parsing module \"TERROR0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Statement argument is required.", NULL, 5);
 
     schema = MODULE_CREATE_YANG("T9", "list user {"
             "key uid;"
@@ -389,7 +389,7 @@
             "   <leaf name=\"group\"><type name=\"string\"/></leaf>"
             "</list>");
     UTEST_INVALID_MODULE(schema, LYS_IN_YIN, NULL, LY_EVALID);
-    CHECK_LOG_CTX("The list's key \"u<id\" not found.", "Path \"/T00:user\".");
+    CHECK_LOG_CTX("The list's key \"u<id\" not found.", "/T00:user", 0);
 
     schema = MODULE_CREATE_YIN("T1", "<list name=\"user\"> "
             "   <key value=\"uid\"/>"
@@ -498,8 +498,8 @@
             "   <leaf name=\"uid\"> <type name=\"int32\"> </leaf>"
             "</list>");
     UTEST_INVALID_MODULE(schema, LYS_IN_YIN, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
-    CHECK_LOG_CTX("Invalid value \"-1\" of \"value\" attribute in \"max-elements\" element.", "Line number 8.");
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Invalid value \"-1\" of \"value\" attribute in \"max-elements\" element.", NULL, 8);
 
     schema = MODULE_CREATE_YIN("TERR_0",
             "<list name=\"user\">"
@@ -511,8 +511,8 @@
             "   <leaf name=\"group\"> <type name=\"string\"/>  </leaf>"
             "</list>");
     UTEST_INVALID_MODULE(schema, LYS_IN_YIN, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
-    CHECK_LOG_CTX("Value \"4294967298\" of \"value\" attribute in \"max-elements\" element is out of bounds.", "Line number 8.");
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Value \"4294967298\" of \"value\" attribute in \"max-elements\" element is out of bounds.", NULL, 8);
 
     schema = MODULE_CREATE_YIN("TERR_0",
             "<list name=\"user\">"
@@ -524,9 +524,9 @@
             "   <leaf name=\"group\"> <type name=\"string\"/> </leaf>"
             "</list>");
     UTEST_INVALID_MODULE(schema, LYS_IN_YIN, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
     CHECK_LOG_CTX("Invalid combination of min-elements and max-elements: min value 20 is bigger than the max value 10.",
-            "Line number 8.");
+            NULL, 8);
 
     schema = MODULE_CREATE_YIN("TERR_0",
             "<list name=\"user\">"
@@ -538,8 +538,8 @@
             "   <leaf name=\"group\"> <type name=\"string\"/> </leaf>"
             "</list>");
     UTEST_INVALID_MODULE(schema, LYS_IN_YIN, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
-    CHECK_LOG_CTX("Value \"-1\" of \"value\" attribute in \"min-elements\" element is out of bounds.", "Line number 8.");
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Value \"-1\" of \"value\" attribute in \"min-elements\" element is out of bounds.", NULL, 8);
 
     schema = MODULE_CREATE_YIN("TERR_0",
             "<list name=\"user\">"
@@ -550,8 +550,8 @@
             "   <leaf name=\"group\"> <type name=\"string\"/> </leaf>"
             "</list>");
     UTEST_INVALID_MODULE(schema, LYS_IN_YIN, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL);
-    CHECK_LOG_CTX("Redefinition of \"key\" sub-element in \"list\" element.", "Line number 8.");
+    CHECK_LOG_CTX("Parsing module \"TERR_0\" failed.", NULL, 0);
+    CHECK_LOG_CTX("Redefinition of \"key\" sub-element in \"list\" element.", NULL, 8);
 
     schema = MODULE_CREATE_YIN("T6",
             "<list name=\"user\">"
@@ -621,9 +621,9 @@
             "   <leaf name=\"group\"><type name=\"string\"/> </leaf>"
             "</list>");
     UTEST_INVALID_MODULE(schema, LYS_IN_YIN, NULL, LY_EVALID);
-    CHECK_LOG_CTX("Parsing module \"TERROR0\" failed.", NULL);
+    CHECK_LOG_CTX("Parsing module \"TERROR0\" failed.", NULL, 0);
     CHECK_LOG_CTX("Invalid value \"systeme\" of \"value\" attribute in \"ordered-by\" element. Valid values are \"system\" and \"user\".",
-            "Line number 8.");
+            NULL, 8);
 
     schema = MODULE_CREATE_YIN("T_DEFS1",
             "<list name=\"user\">"
@@ -852,8 +852,7 @@
     /* check first item */
     CHECK_PARSE_LYD_PARAM(data, LYD_XML, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
-    CHECK_LOG_CTX("Duplicate instance of \"user\".",
-            "Data location \"/T0:user[uid='0']\".");
+    CHECK_LOG_CTX("Duplicate instance of \"user\".", "/T0:user[uid='0']", 0);
 
     data =
             "<user xmlns=\"urn:tests:T0\">"
@@ -870,7 +869,7 @@
     CHECK_PARSE_LYD_PARAM(data, LYD_XML, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
     CHECK_LOG_CTX("Unique data leaf(s) \"name group\" not satisfied in \"/T0:user[uid='0']\" and \"/T0:user[uid='1']\".",
-            "Data location \"/T0:user[uid='1']\".");
+            "/T0:user[uid='1']", 0);
 
     /* double key */
     schema = MODULE_CREATE_YANG("T1", "list user {"
@@ -932,8 +931,7 @@
     /* check first item */
     CHECK_PARSE_LYD_PARAM(data, LYD_XML, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
-    CHECK_LOG_CTX("Duplicate instance of \"user\".",
-            "Data location \"/T1:user[uid='0'][group='User']\".");
+    CHECK_LOG_CTX("Duplicate instance of \"user\".", "/T1:user[uid='0'][group='User']", 0);
 
     /* min elements max elements */
     schema = MODULE_CREATE_YANG("T2",
@@ -1053,8 +1051,7 @@
             "</user>";
     CHECK_PARSE_LYD_PARAM(data, LYD_XML, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
-    CHECK_LOG_CTX("Too few \"user\" instances.",
-            "Schema location \"/T2:user\".");
+    CHECK_LOG_CTX("Too few \"user\" instances.", "/T2:user", 0);
 
     data =
             "<user xmlns=\"urn:tests:T2\">"
@@ -1089,8 +1086,7 @@
             "</user>";
     CHECK_PARSE_LYD_PARAM(data, LYD_XML, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
-    CHECK_LOG_CTX("Too many \"user\" instances.",
-            "Data location \"/T2:user[uid='5']\".");
+    CHECK_LOG_CTX("Too many \"user\" instances.", "/T2:user[uid='5']", 0);
 
     /* empty list */
     schema = MODULE_CREATE_YANG("T_EMPTY_LIST",
@@ -1205,8 +1201,7 @@
             "]}";
     CHECK_PARSE_LYD_PARAM(data, LYD_JSON, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
-    CHECK_LOG_CTX("Duplicate instance of \"user\".",
-            "Data location \"/T0:user[uid='0']\".");
+    CHECK_LOG_CTX("Duplicate instance of \"user\".", "/T0:user[uid='0']", 0);
 
     data =
             "{\"T0:user\": ["
@@ -1216,7 +1211,7 @@
     CHECK_PARSE_LYD_PARAM(data, LYD_JSON, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
     CHECK_LOG_CTX("Unique data leaf(s) \"name group\" not satisfied in \"/T0:user[uid='0']\" and \"/T0:user[uid='1']\".",
-            "Data location \"/T0:user[uid='1']\".");
+            "/T0:user[uid='1']", 0);
 
     /* double key */
     schema = MODULE_CREATE_YANG("T1", "list user {"
@@ -1265,8 +1260,7 @@
     /* check first item */
     CHECK_PARSE_LYD_PARAM(data, LYD_JSON, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
-    CHECK_LOG_CTX("Duplicate instance of \"user\".",
-            "Data location \"/T1:user[uid='0'][group='User']\".");
+    CHECK_LOG_CTX("Duplicate instance of \"user\".", "/T1:user[uid='0'][group='User']", 0);
 
     /* min elements max elements */
     schema = MODULE_CREATE_YANG("T2",
@@ -1353,8 +1347,7 @@
             "]}";
     CHECK_PARSE_LYD_PARAM(data, LYD_JSON, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
-    CHECK_LOG_CTX("Too few \"user\" instances.",
-            "Schema location \"/T2:user\".");
+    CHECK_LOG_CTX("Too few \"user\" instances.", "/T2:user", 0);
 
     data =
             "{\"T2:user\": ["
@@ -1367,8 +1360,7 @@
             "]}";
     CHECK_PARSE_LYD_PARAM(data, LYD_JSON, 0, LYD_VALIDATE_PRESENT, LY_EVALID, tree);
     assert_null(tree);
-    CHECK_LOG_CTX("Too many \"user\" instances.",
-            "Data location \"/T2:user[uid='5']\".");
+    CHECK_LOG_CTX("Too many \"user\" instances.", "/T2:user[uid='5']", 0);
 
     schema = MODULE_CREATE_YANG("T_EMPTY_LIST",
             "container user_list {"