記錄

說明

記錄器是當前建置程序的監聽器,會將輸出記錄到檔案。

可以同時存在多個記錄器。每個記錄器都與一個檔案關聯。檔名用作記錄器的唯一識別碼。第一次使用未使用的檔名呼叫 `record` 任務時,將會建立一個記錄器(使用提供的參數)並將其新增到建置的監聽器。使用此檔名對 `record` 任務的所有後續呼叫都將修改該記錄器的狀態(記錄或不記錄)或其他屬性(例如記錄層級)。

一些技術問題:檔案的列印串流會針對 已完成 事件(buildFinishedtargetFinishedtaskFinished)進行快取,並在 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 用於關閉列印串流。