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

7

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

例如:

//做某事

//打印信息

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

提前感谢。

5个回答

3

如果您想让一些信息从测试中显示在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));
    ....
            }

  }

以下是结果:

这里是图片描述


2

使用服务消息,例如将该字符串写入标准输出 ##teamcity[message text='Hello from TeamCity'] 将在构建日志中显示 Hello from TeamCity


0
你是在使用msbuild编译C#应用程序,还是通过构建脚本执行C#应用程序?
或者,您可以使用this从msbuild脚本中传递消息。

是的,我知道使用msbuild打印消息的方法,但在我的情况下,我需要在多个线程中运行程序,我想要打印任何线程的状态,因此我想在代码中实现它。 - user498151

0
继承自Task并使用Microsoft.Build.Utilities:
Log.LogMessage(MessageImportance.High, "Bla-bla-bla");

或者

Log.LogMessage("Test!");

0

我在使用NUnit测试时遇到了一个问题,就是无法通过Console.WriteLine将内容写入构建日志。

我猜测NUnit或TeamCity会重定向控制台流,以便系统调用不会被记录并且不会干扰构建日志。

我暂时将输出重定向回测试方法的标准输出,这样就可以在日志中看到输出了。

// 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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接