MSBuild 中的日志记录概述
使用 MSBuild 记录器,可以对生成事件、消息、警告和错误的报告进行自定义。 记录器可以在控制台窗口中显示信息,写入 XML 或文本文件,或者将生成数据输入数据库中。
MSBuild 记录器
记录器用于将来自生成事件、消息、警告和错误的信息中继到可以方便地读取和解释的日志。 记录器的逻辑是在实现 ILogger 接口的托管类型中编写的。
MSBuild 默认控制台记录器
从命令行运行 MSBuild.exe 时,MSBuild 使用默认控制台记录器在控制台窗口中显示生成事件信息。 您可以通过使用命令行上的 /verbosity 开关来自定义要记录器报告的详细程度。
默认的控制台记录器接受可以修改对控制台窗口的输出的附加参数。 这些参数是在命令行上使用 /consoleloggerparameters 开关指定的。
如果使用的是自定义记录器,可能需要隐藏从默认控制台记录器显示的信息。 在命令行上使用 /noconsolelogger 开关可禁用默认控制台记录器。
MSBuild 文件记录器
MSBuild 还包括一个文件记录器,它将生成事件信息记录到一个文件。 要运行文件记录器,请在命令行中使用下面的开关,其中 MyLog.log 是要用来存储日志信息的文件。
/l:FileLogger,Microsoft.Build;logfile=MyLog.log。文件记录器总共还接受四个参数。 这些是:
Logfile:一个必需的参数,指定要用来存储日志信息的文件。
Append:一个可选 boolean 参数,指示是否将日志追加到指定的文件。如果为 true,则将日志添加到文件中已存在的文本后;如果为 false,则覆盖该文件的内容。 默认值为 false。
Verbosity:一个可选参数,仅为此文件记录器覆盖全局详细级别设置。 这使您可以记录到多个记录器,每个记录器都采用不同的详细级别。
Encoding:一个可选参数,指定文件的编码,如 UTF-8。
多个参数之间以分号 (;) 分隔。 例如,下面的命令行使用 diagnostic 详细级别和 UTF-8 编码将生成事件信息记录到 MyLog.log 文件中,并将日志追加到该文件中的文本中。
MSBuild MyProj.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log; append=true;verbosity=diagnostic;encoding=utf-8
指定记录器
如果要在生成过程中使用默认控制台记录器以外的记录器,请在命令行中使用 /logger 开关指定自定义记录器。 有关 MSBuild 命令行开关的更多详细信息,请参见 MSBuild 命令行参考。
编写记录器
记录器的逻辑以托管代码编写,并在 MSBuild 命令行中使用 /logger 开关指定。
您可以通过编写实现 ILogger 接口的托管类型来编写自己的记录器。 有关更多信息,请参见生成记录器。