记录器是当前构建过程的监听器,它将输出记录到文件中。
可以同时存在多个记录器。每个记录器都与一个文件关联。文件名用作记录器的唯一标识符。第一次使用未使用的文件名调用record
任务将创建一个记录器(使用提供的参数)并将其添加到构建的监听器中。所有后续使用此文件名的record
任务调用将修改该记录器的状态(记录或不记录)或其他属性(如日志级别)。
一些技术问题:文件的打印流在“完成”事件(“buildFinished”、“targetFinished”和“taskFinished”)中被刷新,并在“buildFinished”事件中被关闭。
属性 | 描述 | 必需 |
---|---|---|
name | 与该记录器关联的文件的名称。 | 是 |
action | 这告诉记录器该做什么:它应该开始记录还是停止?第一次为该日志文件调用记录器任务时,如果未提供此属性,则此属性的默认值为“start”。如果在后续调用中未提供此属性,则状态保持为先前状态。 | 否 [值 = “start|stop”,默认 = 无状态更改] |
append | 记录器应该追加到文件,还是创建一个新文件?这仅适用于第一次为该文件调用此任务。 | 否 [值 = “start|stop”,默认 = 无状态更改] |
emacsmode | 如果设置为“true”,则会删除[task] 横幅,类似于 Apache Ant 的-emacs 命令行开关。 |
否;默认值为“false” |
loglevel | 该记录器实例应该在哪个日志级别记录?这不是一次性参数(如append 那样)——您可以在构建过程继续时增加或降低日志级别。 |
否 [值 = “error|warn|info|verbose|debug”,默认 = 无更改] |
以下build.xml
代码片段是使用记录器仅记录<javac>
任务的示例
... <compile > <record name="log.txt" action="start"/> <javac ... <record name="log.txt" action="stop"/> <compile/> ...
以下对<record>
的两次调用设置了两个记录器:一个记录到文件records-simple.log
,日志级别为“info”(默认值),另一个记录到文件ISO.log
,使用日志级别“verbose”。
... <record name="records-simple.log"/> <record name="ISO.log" loglevel="verbose"/> ...
我希望能添加一些功能。它们包括以下内容
属性 | 描述 | 必需 |
---|---|---|
listener | 要从现在开始使用的构建监听器的类名,而不是默认监听器。 | 否 |
includetarget | 要自动记录的目标的逗号分隔列表。如果此值为“all”,则记录所有目标。 | 否;默认值为“all” |
excludetarget | 否 | |
includetask | 要自动记录或不记录的任务的逗号分隔列表。这可能很困难,因为它可能与includetarget/excludetarget 冲突。(例如:includetarget="compile" excludetask="javac" ,应该发生什么?) |
否 |
excludetask | 否 | |
action | 为action 属性添加更大的灵活性。例如,“close”用于关闭打印流。 |
否 |