0

我有一个从命令行执行的 XML 文件 (STAX)

[root@local ~]# staf local STAX EXECUTE FILE "/root/test2.xml" 
ARGS "{'command':'ls'}" WAIT RETURNRESULT

并获得以下输出..

Response
--------
{
  Job ID         : 57
  Start Date-Time: 20130405-18:27:13
  End Date-Time  : 20130405-18:27:13
  Status         : Normal
  Result         : 0
  Job Log Errors : []
  Testcase Totals: {
    Tests : 0
    Passes: 0
    Fails : 0
  }
}

脚本内容..

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "stax.dtd">
<stax>
<defaultcall function="runCommand"/>

<function name="runCommand">
    <function-list-args>
            <function-required-arg name="command"/>
    </function-list-args>

    <try>
           <sequence>

            <script>print("This");</script>
            <message>'%s  %s:  is a:  %s' % (STAXCurrentTestcase, STAXCurrentFunction, command)</message>
            <log>'test'</log>

            <return>0</return>
        </sequence>

        <catch exception="'eTerminateFunction'" var="eInfo">
            <sequence>
                    <log level="'fail'">'%s  %s:  Terminating function   Error: %s' % (STAXCurrentTestcase, STAXCurrentFunction, eInfo)</log>
                    <tcstatus result="'fail'">eInfo</tcstatus>
                    <return>1</return>
            </sequence>
        </catch>
    </try>
</function>
</stax>

为什么在执行期间或之后没有任何日志记录被转储到控制台?
for<log><message>python<script>print("This")</script>

4

1 回答 1

1

据我所知

STAX EXECUTE WAIT RETURNRESULT 请求在结果中准确返回它应该返回的内容,如STAX 用户指南的“执行”部分“结果”小节中所述。它返回有关作业的更多摘要类型信息以及 STAX 作业日志中记录的任何错误。

STAX 作业中的元素在 STAX 作业用户日志中记录一条消息,如STAX 用户指南中的“日志:在 STAX 作业用户日志中记录一条消息”部分所述。本节说要查看“STAX 日志记录”部分的“查询 STAX 作业用户日志”小节,以获取有关如何查询 STAX 作业用户日志以查看您在 STAX 作业中登录的消息的更多信息.

或者,要在 STAX 服务计算机上查询具有作业 ID 1 的 STAX 作业的 STAX 作业用户日志,您可以指定:

STAF local LOG QUERY MACHINE {STAF/Config/MachineNickname} LOGNAME STAX_Job_1_User 

注意:当您运行 STAX 作业时,会创建一个 STAX 作业日志。这与 STAX 作业用户日志不同。只有当 STAX 作业在其中记录数据(例如通过元素)时,才会创建 STAX 作业用户日志。

STAX 作业中的元素向 STAX 监视器发送消息,如 STAX 用户指南http://staf.sourceforge.net/current/STAX/staxug中的“消息:向 STAX 监视器发送消息”部分所述。 html#Header_Message_Element。要查看发送到 STAX Monitor 的消息,您需要通过 STAX Monitor 运行作业。运行 STAX 作业时,消息将显示在“消息”面板中。

至于元素内“打印”语句的输出到哪里,这由 PYTHONOUTPUT 参数控制,该参数可以在注册 STAX 服务时指定或通过 STAX SET PYTHONOUTPUT 请求更改,或在执行时为特定 STAX 作业覆盖STAX 作业(通过在 STAX EXECUTE 请求上或通过 STAX 监视器指定 PYTHONOUTPUT 选项)。这将在“安装和配置”一节中讨论。STAX 用户指南中的“STAX 服务机器” 小节和“执行”部分。

默认设置是在 STAX 作业用户日志中记录 Python 打印输出。因此,如果您使用默认设置,“打印”输出将记录到 STAX 作业用户日志(与元素中的消息记录的位置相同),您可以通过查询 STAX 作业用户日志来查看它我上面讲过。

  • PYTHONOUTPUT 指定 Python 的 stdout/stderr 应该被重定向到哪里(例如,如果您在 STAX 作业的元素中使用 print 语句)。有效值如下(不区分大小写):
  • “JobUserLog”表示将 Python 输出记录在 STAX 作业用户日志中。这是默认设置。
  • “消息”表示将 Python 输出发送到 STAX 监视器并显示在消息面板中。
  • “JobUserLogAndMsg”表示将 Python 输出记录在 STAX 作业用户日志中,并将其发送到 STAX 监视器并显示在消息面板中。
  • “JVMLog”表示使用以下格式将 Python 输出写入 STAX 服务的 JVM 日志中,以便您知道哪个 STAX 作业在什么时间产生了输出: <Timestamp> [JobID: <JobID>] <Python Output>
于 2013-04-10T03:46:05.377 回答