記錄器是當前建置程序的監聽器,會將輸出記錄到檔案。
可以同時存在多個記錄器。每個記錄器都與一個檔案關聯。檔名用作記錄器的唯一識別碼。第一次使用未使用的檔名呼叫 `record` 任務時,將會建立一個記錄器(使用提供的參數)並將其新增到建置的監聽器。使用此檔名對 `record` 任務的所有後續呼叫都將修改該記錄器的狀態(記錄或不記錄)或其他屬性(例如記錄層級)。
一些技術問題:檔案的列印串流會針對 已完成
事件(buildFinished
、targetFinished
和 taskFinished
)進行快取,並在 buildFinished
事件時關閉。
屬性 | 說明 | 必要 |
---|---|---|
name | 此記錄器關聯的檔案名稱。 | 是 |
action | 這會告訴記錄器要執行什麼動作:是否應該開始記錄或停止記錄?第一次針對此日誌檔呼叫記錄器任務時,如果未提供此屬性,則此屬性的預設值為 start。如果後續呼叫未提供此屬性,則狀態仍維持為先前狀態。 |
否 [值 = start|stop,預設值 = 無狀態變更] |
append | 記錄器應附加到檔案,還是建立新的檔案?這僅適用於第一次針對此檔案呼叫此任務時。 | 否 [值 = start|stop,預設值 = 無狀態變更] |
emacsmode | 如果設定為 true,則會移除類似 Apache Ant 的 -emacs 命令列開關的 [task] 標語。 |
否;預設值為 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用於關閉列印串流。 |
否 |