gpt4 book ai didi

c# - 如何从非控制台ASP.Net应用程序捕获stdout

转载 作者:行者123 更新时间:2023-12-02 18:35:55 24 4
gpt4 key购买 nike

我想将日志重定向到Docker提供的AWSLog驱动程序,然后将日志发送到AWS Cloud Watch。 AWS Log Driver文档说我需要将日志发送到STDOUT,但是我的ASP.NET Application无法与Console.WriteLine一起使用。实际上,我根本没有任何编译错误,但是当我运行docker log {ContainerID}命令时,在Consoel.WriteLine语句中看不到任何日志。我可以使用任何等效方式在非控制台.net应用程序中对日志进行STDOUT。 AWS Docker Log Driver

最佳答案

好消息是,您可能只是在寻找Out属性,而该属性又公开了.WriteLine方法。
Console.Out.WriteLine("Some log entry");
有关更多信息,请阅读the reference on docs.microsoft.com

这实际上看起来是一个配置问题,并且(从技术上来说)不是一个理想的记录选择。您说的是“非控制台应用程序”,但我绝对只是在全新的ASP.Net WebAPI项目中运行Console.WriteLine,这很好。您是否正在使用.net core?

最后,我相信建议的dotnet(尤其是核心?)日志记录是通过Microsoft Extensions Logging Abstractions进行的,这意味着您可以依赖ILogger而不是显式的Console实现。

在ASP.Net WebAPI(.Net Framework)中,Console.WriteLine方法绝对不是null,但听起来您正在谈论Console.Out为null。

如果确实必须使用Console.WriteLine,请使用有效的文本流调用Console.SetOut

StreamWriter standardOutput = new StreamWriter(Console.OpenStandardOutput()); 
standardOutput.AutoFlush = true;
Console.SetOut(standardOutput);

关于c# - 如何从非控制台ASP.Net应用程序捕获stdout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57156554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com