代码之家  ›  专栏  ›  技术社区  ›  bobbyrne01

执行STAX文件时将日志消息转储到控制台

  •  0
  • bobbyrne01  · 技术社区  · 13 年前

    我有一个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>
    

    为什么在执行过程中或执行后都不会将日志转储到控制台?
    对于 <log> , <message> 或者蟒蛇 <script>print("This")</script>

    1 回复  |  直到 13 年前
        1
  •  1
  •   Dharmjeet Kumar    13 年前

    据我所知

    STAX EXECUTE WAIT RETURNERESULT请求在结果中返回的内容与在 STAX User's Guide at 。它返回有关作业和STAX作业日志中记录的任何错误的更多摘要类型信息。

    STAX作业中的元素将消息记录在STAX作业用户日志中,如 STAX User's Guide at 。本节介绍了“STAX日志记录”部分,小节 "Querying the STAX Job User Logs" at 有关如何查询STAX作业用户日志以查看已登录STAX作业的消息的更多信息。

    或者,要在STAX作业用户日志中查询STAX服务机器上作业ID为1的STAX作业,可以指定:

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

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

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

    关于元素中“打印”语句的输出去向,这由PYTHONOUTPUT参数控制,该参数可以在注册STAX服务时指定,也可以通过STAX SET PYTHONUTPUT请求更改,或者在执行STAX作业时为特定STAX作业重写(通过在STAX EXECUTE请求上指定PYTHONOTPUT选项或通过STAX监视器)。这在第节中进行了讨论 "Installation and Configuration". sub-section "STAX service machine" at 以及STAX用户指南中的“执行”部分。

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

    • PYTHONOUTPUT指定应该重定向Python stdout/stderr的位置(例如,如果在STAX作业的元素中使用print语句)。有效值如下(不区分大小写):
    • “JobUserLog”表示将Python输出记录在STAX作业用户日志中。这是默认设置。
    • “Message”表示将Python输出发送到STAX监视器,并将其显示在Messages面板中。
    • “JobUserLogAndMsg”表示将Python输出记录在STAX作业用户日志中,并将其发送到STAX监视器并在消息面板中显示。
    • “JVMLog”表示使用以下格式在STAX服务的JVM日志中写入Python输出,这样您就可以知道输出是在哪个STAX作业以及何时发出的: < Timestamp> [JobID: <JobID>] <Python Output>