分享方式:


使用 MSBuild 取得組建記錄檔

將 MSBuild 與命令列選項搭配使用,您可以指定想要檢閱的組建資料量,以及是否要將組建資料儲存至一或多個檔案。 您也可以指定自訂記錄器來收集組建資料。 如需本主題未涵蓋的 MSBuild 命令列選項相關資訊,請參閱命令列參考

注意

如果您使用 Visual Studio IDE 來建置專案,就能藉由檢視建置記錄檔來進行這些組建的疑難排解。 如需詳細資訊,請參閱如何:檢閱、儲存和設定組建記錄檔

設定詳細層級

當您使用 MSBuild 來建置專案,但未指定詳細資料層級時,即會在輸出記錄檔中顯示下列資訊:

  • 已分類為高重要性的錯誤、警告和訊息。

  • 一些狀態事件。

  • 組建摘要。

使用 -verbosity (-v) 參數,您可以控制要在輸出記錄檔中顯示的資料量。 如需疑難排解,請使用 detailed (d) 或 diagnostic (diag) 的詳細資訊層級,其中提供了最多資訊。

當您將 -verbosity 設為 detailed 時,建置程序可能會變慢,而當您將 -verbosity 設為 diagnostic 時,甚至會變得更慢。

msbuild MyProject.proj -t:go -v:diag

詳細資訊設定

下表顯示記錄檔的詳細資訊 (資料行值) 對記錄哪些類型的訊息 (資料列的值) 有什麼影響。

訊息類型/ 詳細資訊 Quiet 最小 正常 詳細 Diagnostic
錯誤
警告
高重要性的訊息
一般重要性的訊息
低重要性的訊息
MSBuild 引擎的其他資訊

將組建記錄檔儲存至檔案

您可以使用 -fileLogger (fl) 參數,將組建資料儲存至檔案。 下列範例會將組建資料儲存至名為 msbuild.log 的檔案。

msbuild MyProject.proj -t:go -fileLogger

在下列範例中,會將記錄檔命名為 MyProjectOutput.log,並將記錄檔輸出的詳細資訊設為 diagnostic。 您可以使用 -fileLoggerParameters (flp) 參數指定這兩個設定。

msbuild MyProject.proj -t:go -fl -flp:logfile=MyProjectOutput.log;verbosity=diagnostic

如需詳細資訊,請參閱命令列參考

將記錄輸出儲存至多個檔案

下列範例會將整個記錄檔儲存至 msbuild1.log、只將錯誤儲存至 JustErrors.log,並且只將警告儲存至 JustWarnings.log。 這個範例會針對這三個檔案的每個檔案使用檔案號碼。 檔案號碼會指定於 -fl-flp 參數 (例如,-fl1-flp1) 的正後方。

適用於檔案 2 和 3 的 -fileLoggerParameters (flp) 參數會指定每個檔案的名稱,以及要在每個檔案中包含的項目。 由於未指定檔案 1 的名稱,因此會使用 msbuild1.log 的預設名稱。

msbuild MyProject.proj -t:go -fl1 -fl2 -fl3 -flp2:logfile=JustErrors.log;errorsonly -flp3:logfile=JustWarnings.log;warningsonly

如果您使用會解譯分號的殼層 (例如 bash),請用單引號或雙引號將任何具有分號的選項括住,以防止將它解譯為命令分隔符號。 如需詳細資訊,請參閱命令列參考

儲存二進位記錄檔

您可以使用 -binaryLogger (bl) 參數,以壓縮的二進位格式儲存記錄檔。 此記錄檔包含建置程序的詳細描述,並可以由特定的記錄分析工具讀取。

在下列範例中,會建立具有名稱 binarylogfilename 的二進位記錄檔。

-bl:binarylogfilename.binlog

您可以使用結構化記錄檢視器來查看二進位記錄,這樣可以更輕鬆地了解發生什麼情況。

如需詳細資訊,請參閱命令列參考

使用自訂記錄器

若要撰寫自己的記錄器,請編寫可實作 ILogger 介面的 Managed 類型。 例如,您可以使用自訂記錄器,透過電子郵件傳送建置錯誤、將其記錄至資料庫,或將其記錄至 XML 檔案。 如需詳細資訊,請參閱組建記錄器

在 MSBuild 命令列中,您會使用 -logger 參數指定自訂記錄器。 您也可以使用 -noconsolelogger 參數,停用預設的主控台記錄器。