2010-07-08 70 views

回答

1

,我不認爲它工作的方式。您通過Task.BuildEngine屬性獲取對構建引擎的引用。然後簡單地調用它的LogMessageEvent來生成一條消息。 BuildMessageEventArgs.Importance根據詳細程度設置確定消息是否實際可見。這與其他日誌記錄API一致。

0

背後的設計決策(即構建不能看到冗長)的理由如下:

(1)構建過程不應該假設用戶(以及她選擇了記錄器)想要什麼。他們不一定由同一個人擁有。考慮走向一個任務知道詳細程度的構建,並且只在診斷冗長時記錄某些信息。您希望在控制檯上以安靜冗長的方式進行構建,但也要附加一個記錄絕對一切的數據庫記錄器。你不能這樣做,因爲任務從未開啓事件,因爲它看到了安靜的冗長。

(2)重要性和詳細程度會混淆。重要的是構建過程的暗示,特別是冗長的記錄器可能想要處理的事件。它們存在於不同的領域:在任務和構建過程中的重要性,僅在伐木工中的詳細程度。

(3)詳細程度本身(例如,/ verbosis)只是一個默認值。記錄器通常允許您爲它們指定特定的詳細程度。例如/ fileloggerparameters:verbosity =詳細。該任務應該得到什麼?可能有幾個。

話雖如此,回想起來有一個很好的理由來重新審視這一點。這是因爲在日誌對象上發起大量事件(您可能會合理地進行診斷)可能會顯着影響構建性能,即使在日誌記錄器將其放棄的較低的冗長度時也會顯着影響構建性能。爲了解決這個問題,我們應該允許構建過程至少知道它是否處於某種「超級冗長」模式,在這種模式下可以像瘋狂一樣記錄日誌。

此外,最重要的是讓你的工作完成。所以也許所有這些細節都是過於複雜的東西。

丹 - 年後我幫助設計了這個。

相關問題