我使用Ant-contrib foreach任务运行SonarQube分析,并进行并行目标调用。
问题是日志显示为[foreach]的一部分,因为记录了并发执行,因此很难阅读。
[foreach] 01:18:12.054 INFO - Initializing Hibernate
[foreach] 01:18:12.065 INFO - Initializing Hibernate
[foreach] 01:18:12.098 INFO - Initializing Hibernate
[foreach] 01:18:16.504 ERROR - Server ID is invalid. Please check settings.
[foreach] 01:18:16.517 ERROR - Server ID is invalid. Please check settings.
[foreach] 01:18:16.530 ERROR - Server ID is invalid. Please check settings.
[foreach] 01:18:16.533 ERROR - Server ID is invalid. Please check settings.
[foreach] 01:18:17.360 INFO - Load project repositories
[foreach] 01:18:17.363 INFO - Load project repositories
在上面的示例中,重复的行指的是不同的执行(每个特定项目的执行)。
有没有办法识别foreach循环中的每个执行(例如,[foreach:project1],[foreach:project2])?
否则,可以采用哪种其他策略来改善这一点?
我想知道是否可以实现一个Log Decorator,它在执行时根据循环中的变量在每个日志中添加前缀。
答案 0 :(得分:0)
每个Ant任务都支持taskname
属性。 taskname
的值决定了" banner"在任务记录消息时使用:
<project name="ant-taskname" default="run">
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<target name="my-echo">
<echo taskname="echo-${letter}">Letter ${letter}.</echo>
</target>
<target name="run">
<foreach list="a,b,c" target="my-echo" param="letter" parallel="true"/>
</target>
</project>
run:
my-echo:
my-echo:
my-echo:
[echo-b] Letter b.
[echo-a] Letter a.
[echo-c] Letter c.
即使[echo-b]
任务实际记录了消息,输出也会显示<echo>
等横幅。您可以针对Sonar任务调整此解决方案。