如何在C#中将自定义消息打印到Teamcity构建日志

时间:2010-11-25 04:59:41

标签: c# build teamcity logging

最近我需要在执行时将C#代码中的一些特殊消息打印到Teamcity构建日志中,有人知道怎么做吗?

像:

// DoSomething的

//打印消息

希望在Teamcity构建日志中可以看到这些消息。

提前致谢

5 个答案:

答案 0 :(得分:2)

如果您希望某些消息显示在Team City构建日志中,请说测试然后只需使用

Console.WriteLine("")

以下是将测试记录到TeamCity Log

的示例
 [SetUp]
 public void Init()
 {
        try
            {
                Console.WriteLine(string.Format("with_fresh_db Init Before RefreshController.StartRefresh: Time: {0:yyyy-MM-dd HH:mm:ssss}", DateTime.Now));
    ....
            }

  }

在这里你可以看到结果:

enter image description here

答案 1 :(得分:0)

您是否正在使用msbuild编译C#应用程序,或通过构建脚本执行C#应用程序?。

或者,您可以使用this来中继msbuild脚本中的消息。

答案 2 :(得分:0)

从Task继承并使用Microsoft.Build.Utilities:

Log.LogMessage(MessageImportance.High, "Bla-bla-bla");

Log.LogMessage("Test!");

答案 3 :(得分:0)

使用Service Messages,例如将此字符串写入stdout ##teamcity[message text='Hello from TeamCity']将导致Hello from TeamCity出现在构建日志中。

答案 4 :(得分:0)

我很难让Console.WriteLine从NUnit测试中写入构建日志。

我假设NUnit或TeamCity重定向了控制台流,因此来自被测系统的任何调用都不会被记录并弄乱构建日志。

我从测试方法暂时重定向回std,并出现在日志中。

// redirect to stdio
var tw = Console.Out;
var sw = new StreamWriter(Console.OpenStandardOutput());
sw.AutoFlush = true;
Console.SetOut(sw);

// write 
Console.WriteLine($"Console writeline from test");

// put it back
Console.SetOut(tw);