marklogic - 如何设置CORB日志来调试XQUery信息

标签 marklogic marklogic-corb

我正在使用 CORB 通过命令在 MarkLogic DB 上运行模块:

ml local corb --modules=abcd.xqy

并且想要生成此处理的日志,我已将 xdmp:log() 添加到 abcd.xqy 中。但是,我无法找出生成日志消息的位置。它不在命令提示符下,也不在 MarkLgoic 日志目录中。

有没有办法通过属性文件设置CORB日志设置?如果是,怎么办?或任何其他方式来跟踪生成的日志消息。

以下一些背景是:

  1. 我已通过 roxy 命令提取 RDFXML

    ml local deploy content

  2. 现在,我将 RDFXML 作为输入,并通过上述 CORB 命令将它们转换为三元组。运行成功。
  3. insert-taxonomy-triples.xqy 有一些日志消息未显示在命令提示符以及 MarkLogic 日志目录中。
我的完整命令是:

ml 本地 corb --modules=/tools/ingest/insert-taxonomy-triples.xqy --uris=/tools/ingest/find-taxonomy-uris.xqy

插入分类三元组.xqy

import module namespace sem = "http://marklogic.com/semantics" at "/MarkLogic/semantics.xqy"; import module namespace c = "http://bsigroup.com/ns/meddev/common/constants" at "/app/common/constants.xqy";

declare namespace xdmp = "http://marklogic.com/xdmp";

declare variable $URI as xs:string external;

let $taxonomy-name := fn:replace(fn:replace($URI, '/taxonomies/',''), '.rdf','')

let $graph-name := fn:concat($c:BSI-TAXONOMY-BASE-URI, $taxonomy-name)

let $log := xdmp:log("xxxxxxxxxxxxxxxx")

let $log := xdmp:log(fn:concat("/tools/ingest/insert-taxonomy-triples.xqy ", "main module: parsing taxonomy ", $URI, " and inserting triples to graph ", $graph-name), "debug")

let $permissions := (xdmp:permission("meddev-role", "update"), xdmp:permission("meddev-role", "read"))

return sem:rdf-insert( sem:rdf-parse(fn:doc($URI), "rdfxml"), (fn:concat("override-graph=", $graph-name)), $permissions, ($graph-name) )

find-taxonomy-uris.xqy

declare namespace xdmp = "http://marklogic.com/xdmp"; declare namespace cts = "http://marklogic.com/cts";

let $taxonomy-uris := cts:uri-match("/taxonomies/*")

let $log := xdmp:log(fn:concat('/tools/ingest/find-taxonomy-uris.xqy', 'main module: the taxonomies found are ', fn:count($taxonomy-uris), ' URIs ' ), 'debug')

return ( fn:count($taxonomy-uris), $taxonomy-uris )

命令提示符结果:

D:\mdol-dev\mdol-as>ml local corb --modules=/tools/ingest/insert-taxonomy-triple s.xqy --uris=/tools/ingest/find-taxonomy-uris.xqy

java -cp D:/mdol-dev/mdol-as/deploy/lib/java/corb.jar;D:/mdol-dev/mdol-as/deploy /lib/java/marklogic-xcc-5.0.2.jar com.marklogic.developer.corb.Manager xcc://adm in:admin@localhost:9002/meddev-content "" tools/ingest/insert-taxonomy-triples.x qy 1 tools/ingest/find-taxonomy-uris.xqy "/" meddev-modules false

logging to CONSOLE Jul 16, 2014 10:35:59 AM com.marklogic.developer.SimpleLogger configureLogger

INFO: setting up logging for: com.marklogic.ps Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager run

INFO: com.marklogic.developer.corb.Manager starting: version 2010-08-24.1 on 1.7 .0_40 (Java(TM) SE Runtime Environment) Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager run

INFO: maximum heap size = 1783 MiB Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager prepareContentSour ce

INFO: using content source xcc://admin:admin@localhost:9002/meddev-content Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager registerStatusInfo

INFO: Configured modules db: meddev-modules Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager registerStatusInfo

INFO: Configured modules root: / Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager registerStatusInfo

INFO: Configured uri module: tools/ingest/find-taxonomy-uris.xqy Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager registerStatusInfo

INFO: Configured process module: tools/ingest/insert-taxonomy-triples.xqy Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager prepareModules

INFO: checking modules, database: meddev-modules Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager prepareModules

INFO: Skipping module installation: tools/ingest/find-taxonomy-uris.xqy Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager prepareModules

INFO: Skipping module installation: tools/ingest/insert-taxonomy-triples.xqy Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager populateQueue

INFO: populating queue Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager populateQueue

INFO: invoking module /tools/ingest/find-taxonomy-uris.xqy Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager populateQueue

INFO: expecting total 2 Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Manager populateQueue

INFO: queued 2/2 Jul 16, 2014 10:35:59 AM com.marklogic.developer.corb.Monitor monitorResults

INFO: monitoring 2 tasks Jul 16, 2014 10:39:29 AM com.marklogic.developer.corb.Monitor showProgress

INFO: completed 1/2, 0 tps, 1 active threads Jul 16, 2014 10:39:29 AM com.marklogic.developer.corb.Monitor monitorResults

INFO: waiting for pool to terminate Jul 16, 2014 10:39:29 AM com.marklogic.developer.corb.Monitor monitorResults

INFO: completed all tasks 2/2, 0 tps, 0 active threads

最佳答案

xdmp:log() 生成的任何消息都将位于 ErrorLog.txt 中(在 Linux 上:/var/opt/MarkLogic/Logs/ErrorLog.txt)。 txt)。您编写的命令也使用 Roxy Deployer

--modules 参数告诉 Corb 你想要做什么,但你还需要指定 --collection (命名要处理的集合的字符串)或--uris(识别要处理哪些文档的模块)。将其中之一添加到您的命令中,您应该会看到 Corb 的日志消息出现在控制台上。


根据附加信息,我看到了一些事情。

  1. find-taxonomy-uris.xqy 显然找到了两个:INFO:排队 2/2
  2. insert-taxonomy-triples.xqy 成功处理了这两项:INFO:完成所有任务 2/2
  3. 您有三个 xdmp:log() 调用,其中两个调用传递“debug”参数。文件日志级别的默认设置是 info,这将排除调试消息。在管理 UI 中,转到“组”->“默认”(假设这是您正在使用的组名称),向下滚动到“文件日志级别”并将其设置为“调试”。这应该会使这些消息出现。您应该已经看到 xdmp:log("xxxxxxxxxxxxxxxxxx") 调用;你是?

另一个观察结果:由于您的目标是将 RDFXML 转换为 MarkLogic 三元组,因此您可以使用 mlcp ,它开箱即用地为您执行该转换。如果您尝试过但不起作用,那么了解这一点将会很有用。

关于marklogic - 如何设置CORB日志来调试XQUery信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24752349/

相关文章:

marklogic - MarkLogic 中的范围路径索引中带有空格的属性值的词法值无效

search - 如何对一个或多个集合中的文档执行 MarkLogic 搜索

MarkLogic CoRB 信息性消息

javascript - 在marklogic中使用Javascript遍历Json节点?

java - CORB 作业 : Handle ServerConnectionException: Connection reset by peer

rest - 将多条记录加载到marklogic服务器中

javascript - 将变量传递给 xdmp.eval()

java - MarkLogic 关于使用 Java API 进行 SELECT 等效操作的基本问题