我正在使用 CORB 通过命令在 MarkLogic DB 上运行模块:
ml local corb --modules=abcd.xqy
并且想要生成此处理的日志,我已将 xdmp:log()
添加到 abcd.xqy
中。但是,我无法找出生成日志消息的位置。它不在命令提示符下,也不在 MarkLgoic 日志目录中。
有没有办法通过属性文件设置CORB日志设置?如果是,怎么办?或任何其他方式来跟踪生成的日志消息。
以下一些背景是:
- 我已通过 roxy 命令提取 RDFXML
ml local deploy content
- 现在,我将 RDFXML 作为输入,并通过上述 CORB 命令将它们转换为三元组。运行成功。
- 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 的日志消息出现在控制台上。
根据附加信息,我看到了一些事情。
- find-taxonomy-uris.xqy 显然找到了两个:
INFO:排队 2/2
。 - insert-taxonomy-triples.xqy 成功处理了这两项:
INFO:完成所有任务 2/2
。 - 您有三个
xdmp:log()
调用,其中两个调用传递“debug”参数。文件日志级别的默认设置是 info,这将排除调试消息。在管理 UI 中,转到“组”->“默认”(假设这是您正在使用的组名称),向下滚动到“文件日志级别”并将其设置为“调试”。这应该会使这些消息出现。您应该已经看到xdmp:log("xxxxxxxxxxxxxxxxxx")
调用;你是?
另一个观察结果:由于您的目标是将 RDFXML 转换为 MarkLogic 三元组,因此您可以使用 mlcp ,它开箱即用地为您执行该转换。如果您尝试过但不起作用,那么了解这一点将会很有用。
关于marklogic - 如何设置CORB日志来调试XQUery信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24752349/