我使用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,它在执行时根据循环中的变量在每个日志中添加前缀。
发布于 2016-03-01 00:43:07
每个Ant任务都支持taskname属性。taskname的值决定了任务记录消息时使用的banner:
build.xml
<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>任务实际记录了消息,输出也会显示诸如[echo-b]之类的横幅。您可以根据Sonar任务调整此解决方案。
https://stackoverflow.com/questions/35650338
复制相似问题