【问题标题】:How to redirect stdout stderr in an ant script?如何在ant脚本中重定向stdout stderr?
【发布时间】:2011-09-28 09:02:18
【问题描述】:

我正在触发一个蚂蚁脚本(通过巡航控制),并且希望能够特定蚂蚁目标的标准输出和标准错误转储到纯文本文件

是的,我知道巡航控制系统已经维护了一个包含此信息(以及许多其他内容)的 XML 日志文件,但出于可移植性原因,我需要从 ant 脚本本身进行此操作。

这可能吗,如果可以,怎么做?

非常感谢!

【问题讨论】:

    标签: ant stdout cruisecontrol stderr


    【解决方案1】:

    很简单:

    ant -logfile <logfile> <command>
    

    你也可以对蚂蚁说闭嘴:

    ant -q <command>
    

    对我来说效果很好。

    【讨论】:

    • 这可以在命令行上运行,我正在寻找一种可以在 ant 脚本中运行的解决方案。无论如何感谢您的回答!
    【解决方案2】:

    recorder 任务也许可以做你想做的事:

    <record name="log.txt" action="start"/>
    ...
    <record name="log.txt" action="stop"/>
    

    除此之外,某些任务(exec、java 等)自己提供此功能(通常通过 outputerror 参数)

    【讨论】:

      【解决方案3】:

      试试这个:

      <java classname="some.package.Class"
          fork="yes"
          output="stdouterr.txt">
          ...
      </java>
      

      stdouterr.txt 将包含 stdout 和 stderr

      <java classname="some.package.Class"
          fork="yes"
          output="stdout.txt"
          error="stderr.txt">
          ...
      </java>
      

      stdout.txtstderr.txt 将分别包含 stdout 和 stderr

      根据我的经验,由于文件访问权限,当 ant 脚本在巡航控制上运行时,记录任务往往会失败(如果有人能告诉我如何解决,我会很高兴的)。

      HTH

      【讨论】:

      • 您只需要确保用户 CC 以对文件具有写入权限的身份运行 - 它肯定可以工作。 “记录”的优势在于它可以捕获任何任务的输出,而不仅仅是内部支持的任务。
      猜你喜欢
      • 2012-03-09
      • 1970-01-01
      • 2011-03-02
      • 2021-09-08
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 2014-07-22
      • 2012-10-08
      相关资源
      最近更新 更多