2010-06-16 77 views
2

我想實現的是將log4j作爲我的Ant構建文件的唯一輸出。Apache Ant輸出只使用log4j

獲得log4j的工作非常完美,除了它擴展螞蟻輸出。所以我讓Ant的DefaultLogger穿插着log4j輸出。舉一個很簡單的Ant構建文件:

<project name="Maintenance_to_Delivery" default="main" basedir="."> 
    <target name="main"> 
     <echo message="test"> 
    </target> 
</project> 

而且log4j.properties

log4j.rootLogger=ERROR, stdout 
log4j.logger.org.apache.tools.ant.Project=INFO 
log4j.logger.org.apache.tools.ant.Target=INFO 
log4j.logger.org.apache.tools.ant.taskdefs=INFO 
log4j.logger.org.apache.tools.ant.taskdefs.Echo=INFO 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{HH:mm:ss} %-5p %m%n 
log4j.appender.stdout.Threshold=INFO 

並運行此加上輸出:

# ant -lib /app/apache-sf/log4j/1.2.16/log4j-1.2.16.jar:. -listener org.apache.tools.ant.listener.Log4jListener 

Buildfile: /home/sysswb/working/qa/sep/M2D-new/build.xml 
16:36:59 INFO Build started. 

main: 
16:37:00 INFO Target "main" started. 
    [echo] TEST 
16:37:00 WARN TEST 
16:37:00 INFO Target "main" finished. 

BUILD SUCCESSFUL 
Total time: 1 second 
16:37:00 INFO Build finished 

所以 - 是有可能得到的log4j完全替換DefaultLogger輸出?沒有寫自定義記錄器?由於-listener參數註冊了額外的偵聽器,因此DefaultLogger使用的任何偵聽器都可以被刪除/禁用嗎?

我只是Java 1.6.0_18和Ant 1.8.0。 TIA。

回答

0

您可以在運行ant時在類路徑中傳遞log4j.properties。

退房this,它有很多詳細的解釋,請發表談話說:「凱文」,這裏是摘錄:

Log4j的加載由 其配置尋找系統屬性 log4j.configuration。否則, 會在類路徑中查找log4j.properties或 log4j.xml。

+0

log4j的完美的作品 - 在我的問題的輸出示例顯示。我的問題是,它擴展了輸出...我想我應該添加到我的問題「我怎樣壓制DefaultLogger輸出」 – DisabledLeopard 2010-06-16 08:09:24

+0

只是澄清,你不希望DefaultLogger被Ant使用。相反,應該使用你的log4j.properties。這是這種情況還是你想完全禁止Ant日誌? – 2010-06-16 08:33:12

+0

我想log4j完全控制輸出 - 除了log4j所說的東西外,Ant應該什麼都不顯示。 log4j工作正常 - 我只是努力去除默認的Ant記錄器部分。 – DisabledLeopard 2010-06-17 01:33:20

0

嘗試使用-e開關

ant -lib . -listener org.apache.tools.ant.listener.Log4jListener -e main 
Buildfile: D:\install\apache-ant-1.8.0RC1-bin\apache-ant-1.8.0RC1\bin\build.xml 
14:29:20 INFO Build started. 

main: 
14:29:20 INFO Target "main" started. 
test 
14:29:20 WARN test 
14:29:20 INFO Target "main" finished. 

BUILD SUCCESSFUL 
Total time: 0 seconds 
14:29:20 INFO Build finished. 

[echo] test不見了

+0

所有-e都是刪除裝飾品。測試仍然輸出所有消失的是「[回聲]」 - 即上面的線「14:29:20 WARN測試」 – DisabledLeopard 2010-06-17 01:35:52

+0

但你在腳本中迴應'測試'。所以必須出現。我在上面提到,'[echo]測試'已經消失了。 – JoseK 2010-06-17 06:46:45